SQL附加到VARCHAR列失败,并出现Truncate DOUBLE错误

时间:2019-01-31 13:41:29

标签: mysql sql

我有一个带有列的表

tick varchar(10), category varchar(100)

,它们具有以下2条记录(用于示例)

EFG,0
XYZ,#

(EFG和XYZ)分别是刻度栏的值,(0和#)是类别栏的值。

我需要将字符串',Cool'(包括逗号)附加到现有的类别值上,以使上述两条记录变为

"EFG","0,Cool,"
"XYZ","#,Cool,"

所以我正在运行以下SQL语句:

update tablen set category = category + ',Cool,' where tick='EFG';
update tablen set category = category + ',Cool,' where tick='XYZ';

但是,对于第一个SQL语句,它根本没有更改任何值。第二,类别值从#更新为“ 0”

在两种情况下,我都会收到警告:

 Warning: #1292 Truncated incorrect DOUBLE value: '#' (and for '0')
 Warning: #1292 Truncated incorrect DOUBLE value: ',Cool,'

无法理解为什么VARCHAR列更新会引发DOUBLE值错误。

有人可以告诉我我在这里做错了什么吗?是否需要任何类型转换?

非常感谢

1 个答案:

答案 0 :(得分:1)

在mysql中,concat不是+,而是concat()

update tablen set category = concat(category , ',Cool,') where tick='EFG';
update tablen set category = concat(category , ',Cool,') where tick='XYZ';

加号使mysql认为值是数字..但您有varchar ..