2011-05-09 68 views
1

下面我有一些代码返回一个干净的字符串剥离不需要的字符从一个字符串在MS SQL

如何将保留逗号输出

select @cleanline=line from #tbl 

    While PatIndex('%[^A-Z,a-z,0-9]%', @cleanline) > 0   
    Set @cleanline = Stuff(@cleanline, PatIndex('%[^A-Z,a-z,0-9]%', @cleanline), 1, '') 

    print @cleanline 

感谢 罗布

+2

您的代码** **不保留逗号。你问怎么没有? – 2011-05-09 13:38:43

+0

对不起,也许我没有让自己清楚 - 我需要保持az 0-9和逗号 – Rob 2011-05-09 13:43:02

+2

@Rob - 那么如果我尝试'声明@cleanline varchar(max)='一,二,三,$''并运行它您的代码逗号保留。 – 2011-05-09 13:44:24

回答

3

变化 %[^A-Z,a-z,0-9]%%[^A-Z0-9]%%[^A-Za-z0-9]%

默认情况下,SQL Server isn' t情况敏感的,你不需要在 pattern-match strings

编辑逗号:原来有没有逗号在数据...

select @cleanline = line from #tbl 
set @tokeeppattern = '%[^A-Z,a-z0-9' + CHAR(9) + ']%' 


While PatIndex(@tokeeppattern, @cleanline) > 0   
Set @cleanline = Stuff(@cleanline, PatIndex(@tokeeppattern, @cleanline), 1, '') 

print @cleanline