我在指定要用作CSV(逗号分隔值)的varchar字段中出现了一些我想要清理的怪癖。在SQL中清理CSV字符串/ varchar
例如额外的逗号:val1, ,val2, val3
或尾随逗号val1, val2,
我如何制作一个SQL与,
取代, ,
并移除最后一个字符,如果它是一个,
?
我在指定要用作CSV(逗号分隔值)的varchar字段中出现了一些我想要清理的怪癖。在SQL中清理CSV字符串/ varchar
例如额外的逗号:val1, ,val2, val3
或尾随逗号val1, val2,
我如何制作一个SQL与,
取代, ,
并移除最后一个字符,如果它是一个,
?
SELECT REPLACE(columnName, ', ,', ', ')
FROM TableName
这可能并不总是特别是当你有逗号之间的多个空格的工作。
如果使用Oracle数据库
select REGEXP_REPLACE(REGEXP_REPLACE('val1, ,val2, val3,', ',\s,', ','),'[,]$','')
from dual
在MySQL中,你可以写你自己的功能像Rasika's Blog
太糟糕'REGEXP_REPLACE'不能在ms-sql上工作 – Daniel 2013-04-05 18:48:26
结束了使用一个像选择和替换您可以使用regexp_replace
功能
-- 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 '%,'
在将文件导入数据库之前或之后使用
? – Barranka 2013-04-05 18:10:19
后,(它不是一个真正的文件,只是值) – Daniel 2013-04-05 18:42:58