簡體   English   中英

SQL SELECT 查詢不適用於電子郵件地址

[英]SQL SELECT query not working with Email Addresses

我正在嘗試查詢存儲在我的數據庫中的電子郵件地址以進行登錄。 我在 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'

我完全不知道如何糾正這個問題。 我唯一能想到的是 @ 符號有問題,因為當我添加 @ 符號時,查詢似乎失敗了。 您能提供的任何幫助將不勝感激!

您確定它不起作用嗎? 在此處查看可以正常使用的證明http://sqlfiddle.com/#!9/26b00/4 但是您應該稍微更改一下查詢,如下所示

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

更改查詢以將_ wilcard與LIKE運算符配合使用以匹配任何單個字符,它將正常工作。 參見http://sqlfiddle.com/#!9/ec46f/8

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

使用正則表達式! 只是一個 where 語句來解決這個問題:

select * from site_form
where email REGEXP '^[A-Za-z0-9._%\-+!#$&/=?^|~]+@[A-Za-z0-9.-]+[.][A-Za-z]+$';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM