首页 > 解决方案 > SQL 追加到 VARCHAR 列失败并出现 Truncate DOUBLE 错误

问题描述

我有一个有列的表

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 值错误。

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

非常感谢

标签: mysqlsql

解决方案


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


推荐阅读