在 MySQL 中将 int 转换为 varchar 数据类型
Posted
技术标签:
【中文标题】在 MySQL 中将 int 转换为 varchar 数据类型【英文标题】:Converting int to varchar data type in MySQL 【发布时间】:2016-09-14 08:24:04 【问题描述】:我有两张桌子。我需要比较两个值,但它们在两个表中的数据类型不同。在一个表中,它是 int,而在另一个表中,它是 varchar。我尝试将 varchar 与 cast() 一起使用,但 cast() 不适用于 varchar。
我的查询如下:
select user.username, user_follow.object_id from user,user_follow
left join user_follow
ON cast(user_follow.object_id as varchar(25))= user.username
WHERE user.username= cast(user_follow.object_id as varchar(25));
请帮忙。 谢谢。
【问题讨论】:
【参考方案1】:您应该将cast
作为CHAR
数据类型,没有可以将数据转换为的varchar
数据类型,无论如何请尝试:)
不确定您要使用什么,left join
或 join
。
select u.username, uf.object_id from user u
left join user_follow uf
ON cast(uf.object_id as char(25))= cast(u.username as char(25))
-- WHERE cast(u.username as char(25)) = cast(uf.object_id as char(25));
或者
select u.username, uf.object_id from user u, user_follow uf
-- left join user_follow uf
-- ON cast(uf.object_id as char(25))= cast(u.username as char(25))
WHERE cast(u.username as char(25)) = cast(uf.object_id as char(25));
看看function_cast。
【讨论】:
感谢您的回答。 我已经尝试使用上述查询,但它给了我一个错误。错误代码:1066。不是唯一的表/别名:'user_follow' 已更新,请再次查看。 如果我使用别名,我仍然会出错。错误 1054:“on 子句”中的未知列“u.username”。我的查询是- select u.username, uf.object_id FROM user AS u,user_follow AS uf LEFT JOIN user_follow ON cast(uf.object_id as char(25))= cast(u.username as char(25)) WHERE cast( u.username as char(25)) = cast(uf.object_id as char(25)); @JyotKhanguraChahal 请再检查一次我的答案。你应该使用LEFT JOIN
和WHERE
之一,看看9.2.1.9 LEFT JOIN and RIGHT JOIN Optimization。【参考方案2】:
":不起作用:" 是对观察到的行为的不精确描述。
我们期望 mysql 按照规范“工作”,我们期望的行为是让 MySQL 返回特定的错误消息,例如 1064。
Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near VARCHAR
我们预计该错误消息,因为根据 MySQL 参考手册,VARCHAR
不是 CAST 的有效类型,但 CHAR
是。 p>
参考:
http://dev.mysql.com/doc/refman/5.7/en/cast-functions.html#function_convert
注意:
这不是查询的唯一问题。
似乎有两个对user_follow
表的引用;并且至少其中一个引用需要分配一个表别名。
查询也使用老式逗号语法进行连接操作,而另一个连接操作使用较新的 JOIN 关键字。
如果没有指定要返回的结果集,我们只是 “猜测”您实际要运行的查询。我猜……
SELECT u.username
, f.object_id
FROM user u
LEFT
JOIN user_follow f
ON CONVERT(CHAR(25),f.object_id) = u.username
【讨论】:
【参考方案3】:您可以使用 CONCAT(user_follow.object_id)
【讨论】:
以上是关于在 MySQL 中将 int 转换为 varchar 数据类型的主要内容,如果未能解决你的问题,请参考以下文章
在sql server中将日期时间转换为yyyymmddhhmmss
如何在 JavaScript 中将时间戳转换为 MySQL DateTime?