2016-10-24 2 views
0

가 나는 '비 깨끗한'열이 COL1 형 NVARCHAR의 (20)를 포함하는 숫자 (정수와 소수 모두) 및 텍스트 '데이터 없음' (예를 들어 어떤 데이터의 다양한 표현, 데이터 없음, NO DATA 등)을 찾아 낼 수 있습니다.문자열이 텍스트인지 0으로 표시되는지 확인하는 방법은 무엇입니까?

0, 00, 0.00 등의 0 표현 또는 정확한 텍스트 'NO-DATA'가 포함 된 레코드 만 가져 오는 쿼리를 찾고 있습니다.

나는이 꽤 간단해야 SQL 서버 2016

+0

[ISNUMERIC] (https://msdn.microsoft.com/en-us/library/ms186272.aspx)을 사용하여 값을 확인할 수 있습니다. – Filburt

답변

2

에서 정규 표현식을 사용하는 방법을 찾을 수 없습니다입니다 :

select (case when try_convert(float, col) = 0 then 1 else 0 end) as IsZero 

try_convert() 반환 NULL을 변환이 작동하지 않는 경우.

일반적으로 부동 소수점 수와 상수의 비교는 권장하지 않습니다. 이 경우, 제로의 합리적인 표현은 정확할 것이라고 확신합니다.

그이 필요한 경우, 당신은 할 수 :

물론
select (case when try_convert(int, replace(col, '.', '')) = 0 then 1 else 0 end) as IsZero 

,이 0.0.0을 허용합니다.

+0

구문의 경미한 변경 -'select (case when try_convert (float, col) = 0, 1 else 0 end) IsZero' –

+0

@user2633379. . . 고맙습니다. –

관련 문제