从字符串中删除“1,”和“2,”而不删除“11,”和“12,”

问题描述 投票:0回答:2

我有一列字符串,可以在逗号分隔的列表中包含 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,”。

这里还可以使用哪些其他技术?

sql sql-server replace
2个回答
0
投票

正确的做法是停止使用分隔字符串,但是我知道有时更改数据库结构是不可能的,即使这是正确的做法 - 因此解决方法是在

replace
调用中包含分隔符:

UPDATE TableName
SET DelimitedValues = REPLACE(', '+ DelimitedValues +', ', ', 1, ');
WHERE <condition>

有关更多信息,请阅读在数据库列中存储分隔列表真的那么糟糕吗?,您将在其中看到很多原因,为什么这个问题的答案是绝对是!


-1
投票
UPDATE your_table
SET your_column = TRIM(BOTH ',' FROM REGEXP_REPLACE(your_column, '\\b(1|2),\\s(?![0-9])', ''))
© www.soinside.com 2019 - 2024. All rights reserved.