我有一列字符串,可以在逗号分隔的列表中包含 1-15(例如“
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
”或“2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
”或“1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
”)
如何从上面的所有示例中删除“1,”和“2,”?
已经尝试过:
Replace(Replace(@code, "1, ", "")@code, "2, ", "")
Trim(@code)
最初考虑使用替换功能,但这样做也会从“11,”和“12,”中删除“1,”和“2,”。
这里还可以使用哪些其他技术?
正确的做法是停止使用分隔字符串,但是我知道有时更改数据库结构是不可能的,即使这是正确的做法 - 因此解决方法是在
replace
调用中包含分隔符:
UPDATE TableName
SET DelimitedValues = REPLACE(', '+ DelimitedValues +', ', ', 1, ');
WHERE <condition>
有关更多信息,请阅读在数据库列中存储分隔列表真的那么糟糕吗?,您将在其中看到很多原因,为什么这个问题的答案是绝对是!
UPDATE your_table
SET your_column = TRIM(BOTH ',' FROM REGEXP_REPLACE(your_column, '\\b(1|2),\\s(?![0-9])', ''))