我在一个 varchar 字段中有一些怪癖,该字段被指定用作我想要清理的 CSV(逗号分隔值)。
例如额外的逗号:val1, ,val2, val3
或尾随逗号val1, val2,
如果它是最后一个字符,我如何制作一个替换, ,
并删除最后一个字符的 SQL ?,
,
我在一个 varchar 字段中有一些怪癖,该字段被指定用作我想要清理的 CSV(逗号分隔值)。
例如额外的逗号:val1, ,val2, val3
或尾随逗号val1, val2,
如果它是最后一个字符,我如何制作一个替换, ,
并删除最后一个字符的 SQL ?,
,
regexp_replace
如果使用 oracle db,则可以使用函数
select REGEXP_REPLACE(REGEXP_REPLACE('val1, ,val2, val3,', ',\s,', ','),'[,]$','')
from dual
在 MySql 中,您可以编写自己的函数,就像在Rasika 的博客中一样
SELECT REPLACE(columnName, ', ,', ', ')
FROM TableName
这可能并不总是有效,尤其是当逗号之间有多个空格时。
最终使用了类似的选择器并替换
-- clean tags, remove empty tags
Update [myTable]
set [taglist] = REPLACE([taglist], ', ,', ', ')
WHERE [taglist] like '%, ,%' -- not really needed, I know
-- remove last comma
Update [myTable]
set [taglist] = SUBSTRING([taglist], 0, LEN([taglist]))
WHERE [taglist] like '%,'