我有一个带有列的表
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值错误。
有人可以告诉我我在这里做错了什么吗?是否需要任何类型转换?
非常感谢
答案 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 ..