Thoughts, stories and ideas.

SQL Server 치환과 제거 예시

데이터베이스 관리에 있어서 데이터 정제는 매우 중요한 작업 중 하나입니다. 특히, Microsoft SQL Server에서는 다양한 문자열 함수를 활용하여 데이터를 원하는 형태로 가공할 수 있습니다. 이번 포스팅에서는 SQL Server에서 문자열의 일부를 치환하거나 특정 문자를 제거하는 두 가지 실용적인 예시를 다룹니다.

문자열 치환하기

때로는 데이터베이스 내 특정 문자열 패턴을 다른 패턴으로 일괄 변경해야 할 필요가 있습니다. 예를 들어, codeId 컬럼의 값 중 'NS'로 시작하는 모든 데이터를 'NVS'로 시작하도록 변경하려는 경우가 이에 해당합니다.

문제 상황

codeId 컬럼의 값이 'NS'로 시작하는 모든 행을 찾아, 'NS'를 'NVS'로 변경하고 싶습니다.

구현

SQL Server의 STUFF 함수를 사용하여 이 작업을 간단히 수행할 수 있습니다. STUFF 함수는 문자열의 특정 부분을 다른 문자열로 치환할 때 사용됩니다.

UPDATE t_code
SET codeId = STUFF(codeId, 1, 2, 'NVS')
WHERE codeId LIKE 'NS%'

이 쿼리는 codeId 컬럼의 값이 'NS'로 시작하는 모든 행을 대상으로, **codeId**의 첫 번째 위치부터 2글자('NS')를 'NVS'로 치환합니다.

문자 제거하기

데이터 정제 과정에서 특정 위치의 불필요한 문자를 제거하는 작업이 요구될 수 있습니다. 예를 들어, code 컬럼 끝에 있는 '?'를 제거하거나, codeName 컬럼 시작에 있는 '?'를 제거해야 하는 경우가 있습니다.

문제 상황

  • code 컬럼의 값에서 마지막 문자가 '?'인 경우, 이 문자를 제외한 나머지 문자열로 업데이트합니다.
  • codeName 컬럼의 값에서 첫 번째 문자가 '?'인 경우, 이 문자를 제외한 나머지 문자열로 업데이트합니다.

구현

code 컬럼과 codeName 컬럼에 대한 업데이트를 다음과 같이 수행할 수 있습니다.

UPDATE your_table
SET code = CASE
             WHEN RIGHT(code, 1) = '?' THEN LEFT(code, LEN(code) - 1)
             ELSE code
           END,
    codeName = CASE
                 WHEN LEFT(codeName, 1) = '?' THEN STUFF(codeName, 1, 1, '')
                 ELSE codeName
               END
WHERE codeId = 'ESS_deliveryCompany'

주의사항

  • UPDATE 문을 실행하기 전에, 변경될 데이터를 SELECT 문을 사용하여 미리 확인하는 것이 좋습니다.
  • 중요한 데이터를 다루는 경우, 변경 작업 전에 반드시 데이터베이스의 백업을 생성하세요.
  • SQL Server의 문자열 함수는 다른 데이터베이스 시스템에서는 문법이나 기능이 다를 수 있으므로, 해당 시스템의 문서를 참고하세요.

데이터베이스 내에서 데이터를 깔끔하게 정제하고 관리하는 것은 데이터의 품질을 보장하고, 사용자에게 정확한 정보를 제공하는 데 있어 필수적입니다. 이번 포스팅에서 소개한 문자열 처리 방법을 통해 SQL Server에서 보다 효율적으로 데이터를 관리할 수 있기를 바랍니다.