SQL字符串匹配数字,长度不一

时间:2010-10-14 16:41:57

标签: php sql mysql

我正在查找哪些电话号码的交换服务,从一张显示哪些交换服务的零碎数字表。 所以我的表包含,例如:

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       |

(抱歉,格式化一点垃圾)

leadin是我必须匹配的电话号码的主要部分(存储为VARCHAR,而不是数字)

我提供的电话号码是1924283777(不是真实的) 我如何查询以获得上表中的最佳匹配(它应该选择交换ID 9949),或者在我完成查询后在代码中处理它(php)

tl; dr:leadin列值的可变长度,希望与比leadin更长的数字匹配。

1 个答案:

答案 0 :(得分:2)

我会想像

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

(我没有检查过函数名称,我不确定这在MYSQL中是否可行 - 我很确定它可以在我使用过的SQL中运行)。