2014-02-24 2 views
0

저희 회사는 SQL Server 2008을 사용하여 웹 사이트의 데이터베이스를 관리하고 있습니다. 우리는 현재 이름 변경이 있었으므로 이전 회사 이름이 모두 변경되어야합니다.여러 열에 대해 텍스트를 검색하고 있습니까?

데이터베이스에 여러 테이블과 각 테이블 아래에 많은 열이 있으므로 하나의 테이블에있는 모든 열의 텍스트를 찾고 업데이트하는 데에만 관심이 있습니다.

기본적으로 내가 할 수 있어야하는 것은; "Practices"라는 테이블의 모든 열에 대해 "CSQTC"문자열을 찾으십시오. 일부 열은 문자열을 포함하지 않을 수 있으며 열의 일부 값은 null 일 수 있습니다.

여러 열에서 텍스트를 검색하는 방법을 알고 있지만 많은 코드가 있으며 더 좋은 방법이 있다고 확신합니다. 이것은 내가 어떻게 생각하는지입니다

WHERE columnName LIKE '%CSQTC%' 
     AND columnName2 LIKE '%CSQTC%' 
     AND columnName3 LIKE '%CSQTC%' 
     AND .... 

확실히 더 좋은 방법이 있습니까?

감사합니다.

EDIT : 대신 'CSQTC'의 각 항목을 어떻게 'GPTQ'로 바꿀 수 있는지 묻는 것을 잊었습니까? 다시 한번 감사

답변

0

당신은 아마 당신의 테이블에 텍스트를 포함하는 모든 열에 대한

  1. 모습 (나는 특히 SQL 서버를 모르는 것이다 저장 프로 시저를 작성할 수 있지만, MySQL과 당신은 information_schema에서보고 싶은데)
  2. 각 일치하는 열에 대해 원하는 문자열을 바꾸라는 업데이트 요청을하십시오.

그리고 분명히이 절차를 호출하십시오 (나중에 필요할 것이라고 생각하지 않는 한 삭제할 수도 있습니다). 교체 파트

, 그것은 REPLACE(columnName, 'CSQTC', 'GPTQ') 간단한 사용 될 것이다

P.S. (REPLACE documentation at Microsoft's Technet 참조) 테이블 열을 가져 오는 방법은 SQL server query to get the list of columns in a table along with Data types, NOT NULL, and PRIMARY KEY constraints을 참조하고 SQL Server에서는 저장 프로 시저에 대해 SQL Server stored procedure beginner's guide [closed]을 참조하십시오.

0

이 시작할 수 있습니다 :

SELECT c.name , 
     t.name 
FROM sysobjects o 
     INNER JOIN syscolumns c ON c.id = o.id 
     INNER JOIN systypes t ON t.xusertype = c.xusertype 
WHERE o.name = 'YourTableName' 
     AND t.name IN ('varchar', 'nvarchar', 'text', 'ntext', 'char', 'nchar') 

테이블에서 텍스트가 모든 열을 얻을 수 있습니다.

또한 당신은이 작업을 수행 할 수 있습니다

SELECT 'Update ' + QUOTENAME(o.name) + ' Set ' + c.name + ' = Replace(' + QUOTENAME(c.name) + ', ''CSQTC'', ''GPTQ'')' 
     + ' Where ' + QUOTENAME(c.name) + ' LIKE ''%CSQTC%''' 
FROM sysobjects o 
     INNER JOIN syscolumns c ON c.id = o.id 
     INNER JOIN systypes t ON t.xusertype = c.xusertype 
WHERE o.name = 'YourTableName' 
     AND t.name IN ('varchar', 'nvarchar', 'text', 'ntext', 'char', 'nchar') 

은 테이블의 각 열에 대한 업데이트를 지침을 얻을 수 있습니다.

관련 문제