2010-10-14 40 views
1

我正在查找哪些交換服務哪個電話號碼,從一個零碎的數字表中顯示哪些交換服務。 所以我的表包含,例如:SQL字符串匹配號碼,長度不定

id  |exchcode |exchname  |easting|northin|leadin  | 
----------------------------------------------------------------- 
12122 |SNL/UC  |SANDAL  |43430 |41306 |1924240 | 
12123 |SNL/UC  |SANDAL  |43430 |41306 |1924241 | 
881  |SNL/UD  |SANDAL  |43430 |41306 |1924249 | 
2456 |BD/BCC/1 |BRADFORD CABLE |41627 |43262 |192421  | 
4313 |NEY/UB  |NORMANTON  |43847 |42289 |192422  | 
12124 |SNL/UC  |SANDAL   |43430 |41306 |192425  | 
9949 |OBE/UB  |HORBURY OSSETT |42857 |41971 |192428  | 
9987 |OBE/UB  |WAKEFIELD  |42857 |41971 |1924  | 

(對不起,格式化有點廢話)

引入部分是手機號碼的前一部分,我要匹配(存儲爲VARCHAR,不一個數字)

而且我有一個電話號碼1924283777(不實)提供 我怎麼查詢得到從上面的表中的最佳匹配(應該挑交換ID 9949),還是我處理它在代碼後我做了ne查詢(php)

tl; dr:leadin列值的可變長度,想要與比leadin更長的數字進行最佳匹配。

回答

2

我認爲像

WHERE ? LIKE concat(leadin, '%') order by length(leadin) desc limit 1 

(我沒有檢查函數名,而我不能肯定,這將在MySQL的 - 我敢肯定它會在一個工作我用過的SQL)。

+0

啊呀這是聰明的 - 從來沒有想過倒車哪裏是哪裏,並與%CONCAT是輝煌的。很快,似乎現場。謝謝。 – 2010-10-14 16:49:54