[SQL] 열이 비어 있지 않은 위치를 선택 MYSQL
SQL열이 비어 있지 않은 위치를 선택 MYSQL
MySQL을, 나는 무언가가 존재할 경우에만 열을 선택할 수 있습니까?
예를 들어, 나는 다음과 같은 쿼리를 가지고 :
select phone, phone2
from jewishyellow.users
where phone like '813%'
and phone2
나는 전화가 813로 시작하고 phone2가 뭔가를 가지고 곳에서만 행을 선택하기 위해 노력하고있어.
해결법
-
==============================
1.빈 문자열 phone2의 값을 비교 :
빈 문자열 phone2의 값을 비교 :
select phone, phone2 from jewishyellow.users where phone like '813%' and phone2<>''
그 NULL 값이 거짓으로 해석됩니다.
-
==============================
2.필드가 NULL 사용 있는지 확인하려면, NULL IS NULL 연산자를지지 않습니다.
필드가 NULL 사용 있는지 확인하려면, NULL IS NULL 연산자를지지 않습니다.
MySQL을 참조 http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html
-
==============================
3.NULL과 빈 문자열 값을 확인합니다 :
NULL과 빈 문자열 값을 확인합니다 :
select phone , phone2 from users where phone like '813%' and trim(coalesce(phone2, '')) <>''
N.B. 나는 ISNULL ()가없는 반면, COALESCE는 (), SQL 표준 (-ish)라고 생각합니다.
-
==============================
4.나는 그 (이 후 근무 한 적이없는 수 있도록,이 질문은 매우 오래된) 난 이미 여기 보지 않았다 아주 잘 나를 위해 노력 해왔다 사용하고 있다는 답변은 실제로
나는 그 (이 후 근무 한 적이없는 수 있도록,이 질문은 매우 오래된) 난 이미 여기 보지 않았다 아주 잘 나를 위해 노력 해왔다 사용하고 있다는 답변은 실제로
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
업데이트하려면 내가 기대하지 않았다 이것에주의해야하지만, 제로 또는 아래의 빈 문자열보다 큰 숫자 값이 있습니다 그래서 만약 당신이 다음이 작업을 수행하지 제로 또는 음수가 될 수있는 숫자 나왔습니다 거래, 아주 최근에 저 비트 및 디버깅하기가 매우 어렵습니다 :(
당신이 문자열 (CHAR, VARCHAR, 텍스트 등)을 사용하는 경우, 다음이 될 완벽하게, 잘 될 것입니다 단지 수치에주의.
-
==============================
5.공간이 실수로 데이터 입력에서 전화 (2) 필드에있는 경우, 당신은 IFNULL 및 TRIM 기능을 가진 레코드를 무시할 수 있습니다 :
공간이 실수로 데이터 입력에서 전화 (2) 필드에있는 경우, 당신은 IFNULL 및 TRIM 기능을 가진 레코드를 무시할 수 있습니다 :
SELECT phone, phone2 FROM jewishyellow.users WHERE phone LIKE '813%' AND TRIM(IFNULL(phone2,'')) <> '';
-
==============================
6.
select phone, phone2 from jewishyellow.users where phone like '813%' and phone2 is not null
-
==============================
7.
SELECT phone, phone2 FROM jewishyellow.users WHERE phone like '813%' and (phone2 <> "");
기본 값이 무엇인지에 따라 약간의 tweakage을해야 할 수도 있습니다. 당신이 널 칠 수 있다면, 당신은 분명히 더 나은 대신 "하지 NULL을"할 수 있습니다.
-
==============================
8.우리는 어떤 문자 또는 문자열에 빈 값을 설정하는 CASE를 사용할 수 있습니다. 나는 기본 문자열로 NA를 사용하고 있습니다.
우리는 어떤 문자 또는 문자열에 빈 값을 설정하는 CASE를 사용할 수 있습니다. 나는 기본 문자열로 NA를 사용하고 있습니다.
SELECT phone, CASE WHEN phone2 = '' THEN 'NA' END AS phone2 ELSE ISNULL(phone2,0) FROM jewishyellow.users WHERE phone LIKE '813%'
-
==============================
9.또 다른 방법은 열 값의 CHAR_LENGTH 구체적으로 보일 것이다. (LENGTH와 혼동하지 말 것)
또 다른 방법은 열 값의 CHAR_LENGTH 구체적으로 보일 것이다. (LENGTH와 혼동하지 말 것)
이러한 NULL 또는 0의 값을 갖는 정수 컬럼의 경우와 열 값 falsey 될 수 가양 성을 피할 문자 길이가 0보다 더 큰 기준을 사용. 데이터 유형의 변화를 통해 더 일관성있게 행동.
어떤 길이 최소 1 문자 또는 기타 버리지 값에서 결과.
SELECT phone, phone2 FROM users WHERE phone LIKE '813%' AND CHAR_LENGTH(phone2) > 0
테이블 데이터
users phone (varchar 12) | phone2 (int 10) "813-123-4567" | NULL "813-123-4567" | 1 "813-123-4567" | 0 users2 phone (varchar 12) | phone2 (varchar 12) "813-123-4567" | NULL "813-123-4567" | "1" "813-123-4567" | "0" "813-123-4567" | ""
CHAR_LENGTH (phone2)> 0 결과 (동일)
users 813-123-4567 | 1 813-123-4567 | 0 users2 813-123-4567 | 1 813-123-4567 | 0
대안
phone2 <> ''결과 (다른)
users 813-123-4567 | 1 users2 813-123-4567 | 1 813-123-4567 | 0
phone2> ''결과 (다른)
users 813-123-4567 | 1 users2 813-123-4567 | 1 813-123-4567 | 0
COALESCE (phone2, '') <> ''결과 (동일) 주 : 결과 phone2 다를는 NULL AND phone2 <> ""기대되지 NOT IS
users 813-123-4567 | 1 813-123-4567 | 0 users2 813-123-4567 | 1 813-123-4567 | 0
phone2는 NOT NULL AND phone2 <> ""결과 (다른) IS
users 813-123-4567 | 1 users2 813-123-4567 | 1 813-123-4567 | 0
-
==============================
10.사용하다:
사용하다:
SELECT t.phone, t.phone2 FROM jewishyellow.users t WHERE t.phone LIKE '813%' AND t.phone2 IS NOT NULL
-
==============================
11.당신이 이것을 달성하기 위해 운영자 와일드 카드처럼 사용할 수 있습니다 :
당신이 이것을 달성하기 위해 운영자 와일드 카드처럼 사용할 수 있습니다 :
SELECT t.phone, t.phone2 FROM jewishyellow.users t WHERE t.phone LIKE '813%' AND t.phone2 like '[0-9]';
이러한 방법으로, 당신은 번호 접두사가있는 모든 phone2을 얻을 수 있습니다.
-
==============================
12.내 경우에는 내가 VARCHAR 열, 모두 및! = ''일하지 않았다 IS NOT NULL의 방법을했다,하지만 나를 위해 일한 다음. 그냥 여기를 알리.
내 경우에는 내가 VARCHAR 열, 모두 및! = ''일하지 않았다 IS NOT NULL의 방법을했다,하지만 나를 위해 일한 다음. 그냥 여기를 알리.
SELECT * FROM `db_name` WHERE `column_name` LIKE '%*%'
-
==============================
13.놀랍게도 (같은 아무도 다른 전에 그것을 언급하지 않음) 조건 아래 일을 발견 :
놀랍게도 (같은 아무도 다른 전에 그것을 언급하지 않음) 조건 아래 일을 발견 :
WHERE ORD(field_to_check) > 0
우리는 널 (null) 빈 값을 모두 제외해야 할 때. 사람이 접근 방식의 단점을 알고 있습니까?
from https://stackoverflow.com/questions/1869264/mysql-select-where-column-is-not-empty by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 정렬에 데이터베이스의 모든 테이블을 변환하는? (0) | 2020.05.18 |
---|---|
[SQL] 관계형 데이터베이스 및 그래프 데이터베이스의 비교 (0) | 2020.05.18 |
[SQL] 어떻게 PostgreSQL의 2 진수 곳으로 평균을 반올림? (0) | 2020.05.18 |
[SQL] 내부는 세 개의 테이블을 조인 (0) | 2020.05.18 |
[SQL] 어떻게 오라클에서 사용자의 모든 권한을 보여? (0) | 2020.05.18 |