Php SQL字符串匹配数字,长度可变
我正在从一张显示哪些交换服务的零碎号码表中查找哪些交换服务和哪些电话号码。 因此,我的表包含,例如:Php SQL字符串匹配数字,长度可变,php,sql,mysql,Php,Sql,Mysql,我正在从一张显示哪些交换服务的零碎号码表中查找哪些交换服务和哪些电话号码。 因此,我的表包含,例如: id |exchcode |exchname |easting|northin|leadin | ----------------------------------------------------------------- 12122 |SNL/UC |SANDAL |43430 |41306 |1924240 | 1
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(不是真的)
如何查询以从上表中获得最佳匹配(它应该选择exchange id 9949),还是在完成查询(php)后在代码中处理它
tl;dr:leadin列的值长度可变,希望与比leadin长的数字最匹配。我认为
WHERE ? LIKE concat(leadin, '%') order by length(leadin) desc limit 1
(我还没有检查函数名,我也不确定这在MYSQL中是否有效——我非常确定它在我使用的一个SQL中有效) 天哪,这太聪明了——从来没有想过要去哪里就要去哪里,而用%的concat就太棒了。很快,看起来很到位。非常感谢。