SQL : 문자열이 같지 않은 수행 방법


114

다음 쿼리가 있습니다.

SELECT * FROM table
WHERE tester <> 'username';

tester가 문자열이 아닌 모든 결과를 반환 할 것으로 예상 username하지만 작동하지 않습니다. Like연산자 의 역수를 찾고 있다고 생각 하지만 확실하지 않습니까? 내 검색에서 나는 숫자에 대한 해결책을 찾았지만 (여기서 <>를 얻었습니다), 이것은 문자열과 함께 작동하지 않는 것 같습니다.


5
가치관에 문제가 NULL있습니까? ( NULL <> 'username' => NULL=> 거짓)?
Wrikken

답변:


174

귀하의 where절은 모든 행 반환 tester과 일치하지 않는 username어디에 testernull이 아닌 있습니다.

NULL을 포함하려면 다음을 시도하십시오.

where tester <> 'username' or tester is null

하위 문자열로 "username"이라는 단어가 포함되지 않은 문자열을 찾고 있다면 다음을 like사용할 수 있습니다.

where tester not like '%username%'

42

다음 쿼리를 시도하십시오.

select * from table
where NOT (tester = 'username')

20

NULL 안전 조건은 다음과 같습니다.

select * from table
where NOT (tester <=> 'username')

예!, 이것이 저에게 효과가있는 유일한 것입니다. 왜냐하면 저는 and 's 체인을 가지고 있기 때문입니다. <=> 연산자를 몰랐습니다. 감사!
varta

그냥 것으로 나타났습니다 <=>운영자 만 존재 MySQL대한 추가 정보를 원하시면 참조 세계 <=> 무엇
최고 마스터


7

strcomp기능이있어 적절하다 (문자열이 동일한 복귀 0) :

 SELECT * from table WHERE Strcmp(user, testername) <> 0;

1

결과를 얻는 또 다른 방법

SELECT * from table WHERE SUBSTRING(tester, 1, 8)  <> 'username' or tester is null
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.