我正在尝试通过将默认顺序设置为当前存在的ID
来追溯性地将排序信息添加到我的SQL数据库中。 ID
列为INT
,sequence
列为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))+'"]'
答案 0 :(得分:2)
执行所需操作的一种非常简单的方法是使用search
和concat()
:
concat_ws()
您的查询存在的问题是update products p
set p.sequence = concat('["',
concat_ws('","', p.id, p.id, p.id,
'"]');
表示在MySQL中添加,而不是字符串连接。