SQL Server의 공백 테스트
-
20-08-2019 - |
문제
테이블에 빈 값이 약간있어 IF 문에서 잡을 수없는 것 같습니다.
난 노력 했어
IF @value = ''
그리고 if @value = NULL
그리고 어느 누구도 빈 값을 잡지 않습니다. 바르 차가 전적으로 공백인지 여부를 테스트 할 수있는 방법이 있습니까?
아하! 내가 널 잘못을 테스트하고있는 것으로 밝혀졌습니다. 감사.
해결책
NULL과 비교하려면 IS NULL 키워드를 사용하십시오.
--Generic example:
SELECT *
FROM MY_TABLE
WHERE SOME_FIELD IS NULL;
--Instead of
SELECT *
FROM MY_TABLE
WHERE SOME_FIELD = NULL;
다른 팁
ltrim(rtrim(isNull(@value,''))) = ''
(ltrim (rtrim (@Value)) = ''트릭을 수행해야합니다.
길이 (@Value) = 0 또는 @Value가 null입니다.
여기서 길이 (rtrim (ltrim (yourcolumnname)) = 0 또는 yourcolumnname is null
오히려 과도한 문자열 조작을 수행합니다 LTRIM
그리고 RTRIM
, 첫 번째 "비 공간"표현식을 검색하십시오.
SELECT
*
FROM
[Table]
WHERE
COALESCE(PATINDEX('%[^ ]%', [Value]), 0) > 0
방금 테스트를했고 흥미로운 것을 알았습니다. 나는 다음과 같이 쿼리를 썼습니다.
SELECT *
FROM TableA
WHERE Val IS NOT NULL
AND LEN(RTRIM(LTRIM(Val))) > 0
그러나 실제로 NULL을 확인할 필요는 없습니다. 값을 다듬은 후 길이를 점검하기 만하면됩니다.
SELECT *
FROM TableA
WHERE LEN(RTRIM(LTRIM(Val))) > 0
이것은 잡초를 널로 내밀고 공백 만있는 컬럼을 선택합니다.
결과적으로 SQL Server가 후행 공백을 무시하기 때문에 값을 다듬을 필요가 없습니다. 따라서 실제로 필요한 모든 것이 다음과 같습니다. LEN (VAL)> 0에서 Tablea에서 선택하십시오.
여러 공간이있는 필드가있을 수 있으므로 ( '')를 다듬는 경우 더 나은 결과를 얻을 수 있습니다.
where ltrim(yourcolumnname) = ''
제휴하지 않습니다 StackOverflow