PATINDEX와 ISNUMERIC

PATINDEXISNUMERIC 함수는 SQL Server에서 문자열을 숫자로 확인할 때 사용되는 함수이지만, 두 함수는 다른 방식으로 작동하며, 이에 따라 결과도 다를 수 있습니다.

PATINDEX('%[^0-9]%', @PNR) = 0

  • PATINDEX 함수는 특정 패턴을 문자열 내에서 검색하는 함수입니다.
  • '%[^0-9]%'는 숫자가 아닌 문자(0-9를 제외한 모든 문자)를 찾는 정규 표현식입니다.
  • PATINDEX('%[^0-9]%', @PNR)이 0을 반환하면, 이는 @PNR에 숫자가 아닌 문자가 없음을 의미합니다.
  • 따라서, IF PATINDEX('%[^0-9]%', @PNR) = 0은 @PNR이 순수하게 숫자로만 이루어진 문자열인지 확인합니다.

ISNUMERIC(@PNR) = 1

  • ISNUMERIC 함수는 문자열이 숫자로 변환 가능한지를 확인합니다.
  • ISNUMERIC 함수는 더 넓은 범위의 숫자 형식을 허용합니다. 이는 단순히 0-9의 숫자뿐만 아니라, 부동 소수점 숫자, 통화 기호, 지수 표기법 등을 포함할 수 있습니다.
  • 따라서, ISNUMERIC(@PNR) = 1은 @PNR이 숫자로 변환 가능한지 확인하지만, 이는 꼭 순수한 숫자(0-9)로만 이루어졌다는 것을 의미하지는 않습니다.

예시

결과

  • 순수 숫자: PATINDEXISNUMERIC 모두 참으로 평가됩니다.
  • 부동 소수점: PATINDEX는 거짓, ISNUMERIC은 참으로 평가됩니다.
  • 통화 기호: PATINDEX는 거짓, ISNUMERIC은 참으로 평가됩니다.

따라서, PATINDEX는 문자열이 순수하게 숫자(0-9)로만 이루어졌는지 확인할 때 사용되고, ISNUMERIC은 문자열이 숫자로 변환 가능한지를 보다 넓은 범위에서 확인할 때 사용됩니다.

PATINDEX 한글로 직역하면ChatGPT

PATINDEX 함수의 한글 직역은 “패턴 인덱스”입니다. 조금 더 설명을 덧붙이면, PATINDEX 함수는 특정 패턴이 문자열 내에서 처음 나타나는 위치를 반환하는 함수입니다. SQL Server에서 사용되는 이 함수는 문자열 검색과 패턴 매칭에 유용합니다.

예를 들어, “PATINDEX(‘%abc%’, ‘abcde’)”은 문자열 “abcde”에서 “abc”라는 패턴이 처음 나타나는 위치를 반환합니다.

따라서, PATINDEX 함수는 “패턴 인덱스”라고 직역할 수 있습니다.