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에서 보다 효율적으로 데이터를 관리할 수 있기를 바랍니다.

Subscribe to Keun's newsletter and stay updated.

Don't miss anything. Get all the latest posts delivered straight to your inbox. It's free!
Great! Check your inbox and click the link to confirm your subscription.
Error! Please enter a valid email address!