2010-09-01 108 views
0

我有一個表稱爲記錄有幾列,其中之一是從代表電話號碼的phone。我可以運行此查詢來查看不同的電話號碼:mysql查詢沒有給出正確的結果

SELECT DISTINCT fromphone 
FROM records 

它顯示不同的電話號碼。

但是,如果我運行此查詢:

SELECT * 
FROM records 
WHERE fromphone = '123-456-7890' 

其中fromphone是在表中的電話號碼,沒有結果得到恢復。

+1

fromphone列的數據類型是什麼?請發佈您的表格架構。 – 2010-09-01 18:33:55

+1

也許它的格式是你的電話號碼存儲,所以沒有找到完全匹配。你爲什麼不嘗試使用 - SELECT * FROM WHERE ATphone LIKE'%<全部或部分電話號碼>%' – pavanred 2010-09-01 18:36:19

+0

對於數據中的前後空格,你甚至可以嘗試使用 - WHERE LTRIM(RTIRM(fromphone) )='123-456-7890' – pavanred 2010-09-01 18:45:59

回答

0

您確定在數據庫表中有電話號碼爲123-456-7890的記錄嗎?它可能有一些前導空間或尾隨空間。

嘗試使用LIKE%%運營商,像這樣做:

SELECT * 
FROM records 
WHERE fromphone LIKE '%123-456-7890%' 
+0

工作。不知道爲什麼/如何引導或尾隨的空間在那裏 – JPC 2010-09-01 18:49:40

1

最可能的情況是完全匹配的字符串,「123-456-7890」不在此列。嘗試使用LIKE而不是=,以防萬一有一些額外的空間或者導致等於不匹配電話號碼的東西。

0

如果你前/後間隔,你可以使用TRIM()

SELECT * 
FROM records 
WHERE TRIM(fromphone) = '123-456-7890' 

使用LIKE與領先的,如果你在記錄表,因爲有很多行的尾隨通配符可以變得非常慢當你這樣做時,MySQL必須進行全表掃描。