2013-04-05 54 views
0

我在指定要用作CSV(逗号分隔值)的varchar字段中出现了一些我想要清理的怪癖。在SQL中清理CSV字符串/ varchar

例如额外的逗号:val1, ,val2, val3或尾随逗号val1, val2,

我如何制作一个SQL与,取代, ,并移除最后一个字符,如果它是一个,

+1

? – Barranka 2013-04-05 18:10:19

+0

后,(它不是一个真正的文件,只是值) – Daniel 2013-04-05 18:42:58

回答

1
SELECT REPLACE(columnName, ', ,', ', ') 
FROM TableName 

这可能并不总是特别是当你有逗号之间的多个空格的工作。

2

如果使用Oracle数据库

select REGEXP_REPLACE(REGEXP_REPLACE('val1, ,val2, val3,', ',\s,', ','),'[,]$','') 
from dual 

在MySQL中,你可以写你自己的功能像Rasika's Blog

+0

太糟糕'REGEXP_REPLACE'不能在ms-sql上工作 – Daniel 2013-04-05 18:48:26

0

结束了使用一个像选择和替换您可以使用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 '%,' 
在将文件导入数据库之前或之后使用