在MySQL中将int转换为varchar数据类型

时间:2016-05-18 03:13:11

标签: mysql casting int varchar

我有两张桌子。我需要比较两个值,但它们在两个表中都有不同的数据类型。在一个表中,它是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));

请帮助。 感谢。

3 个答案:

答案 0 :(得分: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

参考:

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

答案 1 :(得分:0)

您应该cast作为CHAR数据类型,没有可以投射数据的varchar数据类型,无论如何请尝试这样:) 不确定要使用的内容,left joinjoin

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

答案 2 :(得分:0)

您可以使用 CONCAT(user_follow.object_id)