我有一個表稱爲記錄有幾列,其中之一是從代表電話號碼的phone。我可以運行此查詢來查看不同的電話號碼:mysql查詢沒有給出正確的結果
SELECT DISTINCT fromphone
FROM records
它顯示不同的電話號碼。
但是,如果我運行此查詢:
SELECT *
FROM records
WHERE fromphone = '123-456-7890'
其中fromphone是在表中的電話號碼,沒有結果得到恢復。
我有一個表稱爲記錄有幾列,其中之一是從代表電話號碼的phone。我可以運行此查詢來查看不同的電話號碼:mysql查詢沒有給出正確的結果
SELECT DISTINCT fromphone
FROM records
它顯示不同的電話號碼。
但是,如果我運行此查詢:
SELECT *
FROM records
WHERE fromphone = '123-456-7890'
其中fromphone是在表中的電話號碼,沒有結果得到恢復。
您確定在數據庫表中有電話號碼爲123-456-7890
的記錄嗎?它可能有一些前導空間或尾隨空間。
嘗試使用LIKE
和%%
運營商,像這樣做:
SELECT *
FROM records
WHERE fromphone LIKE '%123-456-7890%'
工作。不知道爲什麼/如何引導或尾隨的空間在那裏 – JPC 2010-09-01 18:49:40
最可能的情況是完全匹配的字符串,「123-456-7890」不在此列。嘗試使用LIKE
而不是=
,以防萬一有一些額外的空間或者導致等於不匹配電話號碼的東西。
如果你前/後間隔,你可以使用TRIM()
SELECT *
FROM records
WHERE TRIM(fromphone) = '123-456-7890'
使用LIKE與領先的,如果你在記錄表,因爲有很多行的尾隨通配符可以變得非常慢當你這樣做時,MySQL必須進行全表掃描。
fromphone列的數據類型是什麼?請發佈您的表格架構。 – 2010-09-01 18:33:55
也許它的格式是你的電話號碼存儲,所以沒有找到完全匹配。你爲什麼不嘗試使用 - SELECT * FROM WHERE ATphone LIKE'%<全部或部分電話號碼>%' – pavanred 2010-09-01 18:36:19
對於數據中的前後空格,你甚至可以嘗試使用 - WHERE LTRIM(RTIRM(fromphone) )='123-456-7890' – pavanred 2010-09-01 18:45:59