Update the column with Specific Comma Separated Value
本问题已经有最佳答案,请猛点这里访问。
我创建了一个以逗号分隔形式存储值的表。
是否有任何机制可以达到以下效果?
我在表中有一个名为qty的列,它以下列格式存储该值:
1 |
现在我想更新第三个值,即8乘2
您可以使用字符串替换,因为它知道这不是一个格式良好的规范化数据库。
您的数据库应遵循标准规范化模式,以便在性能,可用性和维护性能更好的表之间获得稳固的关系。你的桌子甚至不是1NF。
虽然现在这个查询有帮助,但考虑改变你的结构。
检查此链接以了解有关规范化及其形式的更多信息:规范化
使用几个字符串函数可以做到:
1 2 3 4 5 6 7 8 9 10 11 12 13 | update yourtabel set yourcol = concat( substring_index(yourcol, ',', 2), -- this will get string without trailing comma before third value ',', '2', -- the value you want to update to third value ',', substring_index( yourcol, ',', 2 - (length(yourcol) - length(replace(yourcol, ',', ''))) ) -- this will get string without heading comma after third value ) |
这是SQLFiddle中的一个演示。
SUBSTRING_INDEX:HTTPS://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substring-index
长度:HTTPS://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_length
更换:HTTPS://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_replace
实际上你不应该用逗号存储这些值,因为这会导致SQL注入攻击并且没有其他原因。但是现在要处理下面的查询:
我们假设Student表中有SampleID:
表中名称的值为:'1,5,8,9,7,10,5',并且您想要将'8'替换为'2'
您可以使用以下查询:
您可以进一步修改它以获得更高的准确性。