MySQL에서 무언가 존재하는 열만 선택할 수 있습니까?
예를 들어 다음과 같은 쿼리가 있습니다.
select phone, phone2
from jewishyellow.users
where phone like '813%'
and phone2
phone이 813으로 시작하고 phone2에 무언가가있는 행만 선택하려고합니다.
답변
phone2
빈 문자열과 값을 비교하십시오 .
select phone, phone2
from jewishyellow.users
where phone like '813%' and phone2<>''
참고 NULL
로 해석됩니다 값을 false
.
답변
필드가 NULL 사용하는 경우 확인하려면 IS NULL
, IS NOT NULL
연산자.
MySql 참조 http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html
답변
NULL
문자열 값을 확인 하고 비 웁니다.
select phone
, phone2
from users
where phone like '813%'
and trim(coalesce(phone2, '')) <>''
NB COALESCE ()는 SQL 표준 (-ish)이지만 ISNULL ()은 그렇지 않다고 생각합니다.
답변
내가 사용하고있는 대답은 이미 여기에서 보지 못했던 꽤 잘 작동했습니다 (이 질문은 매우 오래되었으므로 작동하지 않았을 수 있음).
SELECT t.phone,
t.phone2
FROM jewishyellow.users t
WHERE t.phone LIKE '813%'
AND t.phone2 > ''
> ''
값이 null이 아니고 값이 공백이나 공백이 아닌지 확인 하는 부분을 확인하십시오.
기본적으로 필드에 공백 또는 이외의 다른 항목이 NULL
있으면 사실입니다. 또한 매우 짧기 때문에 작성하기 쉽고 함수 COALESCE()
및 IFNULL()
함수의 또 다른 장점 은 필드의 함수 출력을 다른 것과 비교하지 않기 때문에 인덱스 친화적이라는 것입니다.
테스트 사례 :
SELECT if(NULL > '','true','false');-- false
SELECT if('' > '','true','false');-- false
SELECT if(' ' > '','true','false');-- false
SELECT if('\n' > '','true','false');-- false
SELECT if('\t' > '','true','false');-- false
SELECT if('Yeet' > '','true','false');-- true
UPDATE 내가 기대하지 않았다 이것에주의해야하지만, 제로 또는 아래에있는 숫자 값이 없는 빈 문자열보다 큰, 그래서 만약 당신이 다음이 작업을 수행하지 제로 또는 음수가 될 수있는 숫자 나왔습니다 거래 , 그것은 최근에 나를 물었고 디버깅하기가 매우 어려웠습니다.
문자열 (char, varchar, text 등)을 사용하는 경우 숫자에주의하면 완벽하게 괜찮습니다.
답변
phone2 필드에 부주의 한 데이터 입력에서 공백이 있으면 IFNULL 및 TRIM 함수를 사용하여 해당 레코드를 무시할 수 있습니다.
SELECT phone, phone2
FROM jewishyellow.users
WHERE phone LIKE '813%'
AND TRIM(IFNULL(phone2,'')) <> '';
답변
select phone, phone2 from jewishyellow.users
where phone like '813%' and phone2 is not null
답변
SELECT phone, phone2
FROM jewishyellow.users
WHERE phone like '813%' and (phone2 <> "");
기본값에 따라 약간의 조정이 필요할 수 있습니다. 널 (Null) 채우기를 허용 한 경우 대신 “NULL이 아님”을 수행 할 수 있습니다.