我觉得这应该很简单,但我不知道自己在做什么错;
我的查询看起来像这样:
UPDATE table_name SET varchar_column = CAST(int_column AS VARCHAR(255)) WHERE ...
但是我不断收到错误消息,指出存在语法错误;我也尝试使用CONVERT(int_column,VARCHAR(255))
,但发生了同样的事情吗?
有人知道为什么吗?谢谢!
CAST()
不接受VARCHAR(n)
作为目标类型,如the documentation中所述。您可以改用CHAR(n)
(或对于国家字符集使用NCHAR(n)
):
UPDATE table_name SET varchar_column = CAST(int_column AS CHAR(255)) WHERE ...
MySQL将进行隐式转换,因此您无需进行显式转换:
UPDATE table_name
SET varchar_column = int_column ;
也就是说,显式转换通常是个好主意。 MySQL不对字符串采用长度参数。
应强制转换(int_column为CHAR)
查看示例
https://dbfiddle.uk/?rdbms=mysql_5.6&fiddle=ebdc64f999c507e4fc1d4d1b892a1dce