在 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 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。

【讨论】:

感谢您的回答。 我已经尝试使用上述查询,但它给了我一个错误。错误代码: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 JOINWHERE之一,看看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?

在mysql中将纪元数转换为人类可读的日期

如何在 Swift 中将 Int 转换为字符

如何在Android中将double转换为int? [复制]

在 Swift 中将 Int 转换为 String