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

다음 쿼리가 있습니다.

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

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



답변

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

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

where tester <> 'username' or tester is null

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

where tester not like '%username%'


답변

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

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


답변

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

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


답변

select * from table
where tester NOT LIKE '%username%';


답변

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

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


답변

결과를 얻는 또 다른 방법

SELECT * from table WHERE SUBSTRING(tester, 1, 8)  <> 'username' or tester is null


답변