본문 바로가기
MySql

MySQL SQL SELECT query not working with Email Addresses

by 베이스 공부 2020. 11. 19.
반응형

로그인을 위해 데이터베이스에 저장된 이메일 주소를 조회하려고합니다. PHP에서 쿼리에 문제가 있습니다. PHPMyAdmin에서 SQL로 쿼리를 시도하면 빈 세트가 반환됩니다. 몇 가지 테스트를 수행 한 후 something@gmail.com의 이메일에 대해 다음을 결정했습니다.

공장:

SELECT * FROM `Careers` WHERE `Email` LIKE '%something%' and

SELECT * FROM `Careers` WHERE `Email` LIKE '%gmail.com%' and

SELECT * FROM `Careers` WHERE `Email` LIKE '%@%'.

작동하지 않음 :

SELECT * FROM `Careers` WHERE `Email` LIKE 'something@gmail.com' and

SELECT * FROM `Careers` WHERE `Email` LIKE '%something@gmail.com%' and

SELECT * FROM `Careers` WHERE `Email` LIKE '%@gmail.com%'

SELECT * FROM `Careers` WHERE `Email` LIKE '%something%gmail.com'

나는 이것을 수정하는 방법에 대해 완전히 잃어 버렸다. 내가 생각할 수있는 유일한 생각은 @ 기호를 추가하면 쿼리가 실패한 것처럼 @ 기호에 문제가 있다는 것입니다. 당신이 제공 할 수있는 어떤 도움이라도 대단히 감사 할 것입니다!

 

해결 방법

 


SELECT * FROM table1 WHERE `Email` = 'something@gmail.com' -- No need of LIKE operator

SELECT * FROM table1 WHERE `Email` = 'something@gmail.com' -- No need of LIKE operator

SELECT * FROM table1 WHERE `Email` LIKE '%@gmail.com' -- search before string

SELECT * FROM table1 WHERE `Email` LIKE 'something_gmail.com' -- search a single char

수정 :

귀하의 최근 의견에 따라 armscii8_general_ci 데이터 정렬이 여기서 문제입니다. 예를 들어 다음과 같은 테이블을 만듭니다.

CREATE TABLE Table1
    (`email` varchar(19) collate armscii8_general_ci)
;

INSERT INTO Table1
    (`email`)
VALUES
    ('something@gmail.com')
;

아래에서 select * ... 반환을 수행하십시오. . © 종류의 저작권 기호로 바뀌었기 때문에 LIKE 연산자가있는 와일드 카드가 작동하지 않습니다.

something@gmail©com


SELECT * FROM Table1 WHERE `Email` LIKE 'something@gmail_com'; 

 

참조 페이지 https://stackoverflow.com/questions/31030685

 

 

반응형

댓글