SQL

2011-05-09 2 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

귀하의 코드가없는 밝혀졌습니다. 어떻게하지 않을지 묻는거야? –

+0

죄송합니다. 어쩌면 내가 분명히하지 않았을 것입니다. 저는 az 0-9와 쉼표를 유지해야합니다. – Rob

+2

@Rob - 음, '@cleanline varchar (max) ='one, two, three, $ '를 선언하고 실행하십시오. 귀하의 코드는 쉼표가 유지됩니다. –

답변

3

변경 %[^A-Z,a-z,0-9]% ~ %[^A-Z0-9]% 또는 %[^A-Za-z0-9]%

기본적으로 SQL Server는 ' 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