2017-05-19 47 views
1

我甚至不知道如何正確地問這個問題,但這裏是問題所在。 我有一個名爲'name','email'和'number'的表作爲我的列,其ID在AUTO_INCREMENT上設置爲PRIMARY KEY。當我嘗試找到這樣一行:不輸出匹配WHERE值的行

SELECT * FROM MyTable WHERE name='John Doe'` or `SELECT * FROM MyTable WHERE email='[email protected] 

我總是得到我沒有任何大驚小怪的行。 所有三列都是長度爲100的VARCHAR。

'號碼'列包含一串隨機數,因爲我從RFID卡中取出這些號碼(因此將它們與名稱相關聯的數據庫)。所以當我做

SELECT * FROM MyTable WHERE number='12334567890' 

突然一切都不工作,並返回0行。

這裏是它變得陌生的地方。如果我首先查詢數字,我得到0行,但是,如果我先查詢名稱(返回一行),然後查詢關聯的數字IT RETURNS A ROW。如果我要查詢另一個數字,我再次得到0行,如果我要查詢以前的數字,我再次得到0行...

我到目前爲止嘗試附加另一個字符串,如'num 1234567890',但這沒有幫助(也許這是一些格式怪癖,我不知道)。

當談到MySQL時,我是一個初學者,但是像這樣簡單的事情應該是蛋糕散步,然而在這裏我是。

回答

1
SELECT * FROM MyTable WHERE number LIKE '%12334567890%' 

試試這個

+0

聖米婭那工作!你能解釋一下這個語法的作用嗎? – IKouz

+0

事情就是那個兄弟,當你正在使用=它試圖匹配你傳遞的確切數字。但是當你使用LIKE時,它會找到所有具有該模式的值。 – Exprator

+0

但如果你的行包含這樣的數字'8541233456789033'那麼上面的查詢返回這個數字也是 – sunilwananje

0

首先,你瞭解其中的語句,如果你正在寫在那裏山坳=「東西」,它將匹配列中的字符串,如果找到一個匹配,那麼只有它會返回數據。在你的情況下,它是一個隨機數,所以你不能將數據與where子句相提並論,除非你知道確切的值。

SELECT * FROM MyTable WHERE number REGEXP '^[0-9].*$' 
+0

我查詢的數字字符串並不是真正的隨機數,因爲我有一張表將位置關聯的數字存儲到名稱中,並且我有一個RFID掃描器來拉取數字並調用PHP腳本來查詢匹配的數字。 – IKouz

+0

你能給我一些包含數字列的樣本數據嗎? – RiDev