2009-05-20 7 views
0

SQL Server 2005 데이터베이스에 T라는 테이블이 있고 두 개 열에 A와 B가 표시되는데이 A와 B는 더 자주 값을 가지지 않을 것입니다. A와 B가 비어 있는지 확인하는 방법 (길이가 0 인 문자열 모두 포함)?테이블의 열이 비어 있는지 여부를 확인하는 더 좋은 방법은 무엇입니까?

select count(*) as A_count from T where A <> '' 

이의이 데이터 유형 VARCHAR를 가지고 가정 해 봅시다 -

나는 그 일이 순진 방법이있다.

나는 시스템 테이블을 사용하여 동일한 정보를 얻을 수 있는지 궁금해했다. 그렇다면이 쿼리보다 빠를 까? 귀하의 질문의 표현이 부정확하지만

환호

+0

오라클을 사용하지 않는 것은 부끄러운 일입니다. 비트 맵 인덱스는 이런 종류의 작업에 적합합니다. – RichardOD

답변

0

, 당신은 당신의 쿼리를 수정해야합니다 당신은 null을 계산하지 않을 것입니다.

2

귀하의 방법은 기본적으로 올바른 것입니다. 빈칸에 NULL이나 길이가 0이 아닌 빈 문자열이 포함되어 있습니까?

당신이 그 사건을 처리 할 수있는 : 우리가 길이 제로의 문자열을 이야기하는 경우 열 A

0

에 인덱스가 있는지 확인 또한

select count(*) as A_count from T where isnull(rtrim(ltrim(A)), '') <> '' 

,이는 방법입니다 나는 그것을 할 것 :

select count(*) as A_count from T where LEN(A) > 0 

이가 널이 될 수 있다면, 이러한 행 중 하나 LEN (A)> 0 또는 LEN (A) = 0, 당신이에 의해 체포되지 않습니다하지만, 명심하십시오 나는 감싸 야 할 것이다. 이 경우 A 주위를 스 누울 수 있습니다.

SELECT COUNT (*) A_count T의 경우 COALESCE (A, '')로 <> ''

를, 그렇지 않으면 당신의 열이 널 (NULL) 인 경우 다음과 같이

관련 문제