SQL cast()INT到CHAR不能在UPDATE查询

时间:2015-12-06 17:36:44

标签: mysql sql sql-update

我正在尝试通过将默认顺序设置为当前存在的ID来追溯性地将排序信息添加到我的SQL数据库中。 ID列为INTsequence列为TEXT

我希望sequence列采用以下格式:["1", "1", "1"]

以下作品:

UPDATE products p
SET  p.sequence =  p.id

出于某种原因,每当我查询工作时(即使使用cast()),它都会添加值而不是连接它们...

例如,我尝试过:

UPDATE products p 
SET p.sequence = cast(p.id as char(10))+cast(p.id as char(10))

并且sequence列都会更改为id + id的值,例如ID = 1,序列= 2 ......

然后,如果我尝试:

UPDATE products p
SET  p.sequence =  '["'+p.id+'", "'+p.id+'", "'+p.id+'"]'

结果:sequence的值现在是ID值的三倍,即ID = 2,sequence = 6.它是添加ID而不是连接它们。

如果我cast()同一个查询,则会显示“0行受影响”:

UPDATE products p
SET  p.sequence =  '["'+cast(p.id as char(10))+'", "'+cast(p.id as char(10))+'", "'+cast(p.id as char(10))+'"]'

1 个答案:

答案 0 :(得分:2)

执行所需操作的一种非常简单的方法是使用searchconcat()

concat_ws()

您的查询存在的问题是update products p set p.sequence = concat('["', concat_ws('","', p.id, p.id, p.id, '"]'); 表示在MySQL中添加,而不是字符串连接。