반응형
로그인을 위해 데이터베이스에 저장된 이메일 주소를 조회하려고합니다. 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
반응형
'MySql' 카테고리의 다른 글
MySQL JDBC 문자 인코딩 (0) | 2020.11.19 |
---|---|
MySQL Inserting millions of records into MySQL database using Python (0) | 2020.11.19 |
MySQL 각 쿼리 전에 mysql 서버를 ping해야합니까? (0) | 2020.11.19 |
MySQL 모두 NULL이 아닌 경우 (0) | 2020.11.19 |
MySQL 날짜 별 항목 선택-> = NOW (), MySQL (0) | 2020.11.19 |
댓글