MySQL“Field Like Array”功能

时间:2011-09-20 13:10:21

标签: php mysql

我有一个类似的查询:

SELECT ID FROM SomeTable WHERE ZipCode IN (SELECT Zip FROM SomeOtherTable)

这可以按预期工作,但我需要一个LIKE命令。部分美国邮政编码为XXXXX-XXXX。我需要声明只匹配前5个字符,即使它有更多。

我的PHP邮政编码检查是:

preg_match("/^([0-9]{5})(-[0-9]{4})?$/i",$zip_code) 

显示如何检查拉链的格式。

我已经读过没有IN LIKE命令并使用REGEXP,但我不确定如何将REGEXP与select语句一起使用。

如何更改此MySQL语句以仅匹配前5个字符的拉链?

2 个答案:

答案 0 :(得分:2)

您可以将查询更改为:

SELECT ID FROM SomeTable WHERE SUBSTR(ZipCode,0,5) IN (SELECT SUBSTR(Zip,0,5) FROM SomeOtherTable)

顺便说一句,如果SomeOtherTable每个邮政编码有多个记录,您可以通过在内部查询中添加 DISTINCT 来加快速度,因此它只生成一个唯一的邮政编码列表。请参阅the SELECT documentation

答案 1 :(得分:0)

本教程末尾使用的左或右 - http://www.mysqltutorial.org/sql-like-mysql.aspx