2011-09-07 4 views
1

테이블의 모든 열을 검색하고 모든 쉼표를 바꾸는 검색 및 바꾸기 기능이 필요합니다. <,>, 큰 따옴표 < "> . 공간, 작은 따옴표 <는 '> 나는 http://vyaskn.tripod.com/sql_server_search_and_replace.htm처럼 블로그를 통해 갔다 그러나이 방법은 작동하지 않습니다테이블의 모든 열에 대한 검색 및 바꾸기 사용 방법

+1

무엇을 작동하지 않는 이유는 무엇입니까? 당신이 지적한 해결책은 유망 해 보인다. 너 뭐 해봤 니? 어떤 문제가 있습니까? –

+0

전체 데이터베이스의 모든 테이블 대신 하나의 테이블에서만 작업해야합니다. 또한 위에서 언급 한 저장 프로시 저는 정수, 십진수, 숫자 데이터 유형에는 작동하지 않습니다. \t \t \t 하나의 테이블에만 사용하려면 다음을 사용합니다. - Declare @TableName \t \t nvarchar (50) = 't_recur'그리고 테이블의 열에 대해서만 사용하려면 테이블 이름을 설정하는 부분을 제거했습니다. 데이터베이스에있는 모든 테이블에 대해 plz advice – user932809

+2

대체품이 int/decimal/numeric에서 작동 할 것으로 기대하십니까? 네가 운이 없어서 두렵다. 해당 열에 쉼표 등이 표시되는 것은 표시 방법 때문이며 저장 방법 때문이 아닙니다. –

답변

2

쉼표 꺼내 :..

update mytable 
    set myColumn = REPLACE(myColumn, ",", " ") 

을 큰 따옴표의 경우 :

작은 따옴표를 들어

를 : 자세한 내용은

update mytable 
    set myColumn = REPLACE(myColumn, "'", " ") 

은 다음을 참조하십시오 http://msdn.microsoft.com/en-us/library/ms186862.aspx

+0

OP에는 테이블의 모든 열을 대체 할 솔루션이 필요합니다. –

+0

안녕하세요 Chris, 답장을 보내 주셔서 감사합니다. 그러나 Adrian이 언급했듯이 sys.columns r과 비슷한 것을 사용하여 모든 열에서 하나의 명령을 실행해야합니다. – user932809

3
DECLARE @table NVARCHAR(257) = N'dbo.table_name'; 

DECLARE @sql NVARCHAR(MAX) = N'UPDATE ' + @table + ' SET '; 

SELECT @sql = @sql + CHAR(13) + CHAR(10) 
    + QUOTENAME(name) + ' = ' 
    + ' REPLACE(REPLACE(REPLACE(' 
    + QUOTENAME(name) 
    + ','','', '''')' 
    + ',''"'', '''')' 
    + ',''' + CHAR(39) + CHAR(39) + ''', ''''),' 
FROM sys.columns 
WHERE system_type_id IN (167, 175, 231, 239) 
AND [object_id] = OBJECT_ID(@table); 

SET @sql = LEFT(@sql, LEN(@sql)-1) + ';'; 

PRINT @sql; 
--EXEC sp_executesql @sql; 
+0

대신 sys_types에 대한 검사를 수정하여 대신 system_type_id 상수를 사용합니다. 가능하다면'CREATE TYPE not_a_char from int; '를 사용하여 게임을 할 수 있습니다. ... –

+0

안녕하세요, 아론, 솔루션을 가져 주셔서 감사합니다. 하지만 그것을 실행하면 다음과 같은 오류가 발생했습니다 : - 메시지 102, 수준 15, 상태 1, 줄 1 'SE'근처의 구문이 잘못되었습니다. 이 문제에 대한 조언을 좀 해줄 수 있습니까? 미리 감사드립니다. – user932809

+0

인쇄 할 때 또는 실행할 때만 오류 메시지가 나타 납니까? 출력을 디버깅하려고 인쇄 했습니까? 파악하고 있지만 공백이있는 테이블 또는 열 이름이 있습니까? –

관련 문제