Php MySQL“;“类场阵列”;功能

Php MySQL“;“类场阵列”;功能,php,mysql,Php,Mysql,我有一个类似这样的问题: SELECT ID FROM SomeTable WHERE ZipCode IN (SELECT Zip FROM SomeOtherTable) 这是预期的工作,但我需要有一个类似的命令。一些美国邮政编码是XXXXX-XXXX。我需要语句只匹配前5个字符,即使它有更多字符 我的PHP邮政编码检查是: preg_match("/^([0-9]{5})(-[0-9]{4})?$/i",$zip_code) 显示如何检查拉链以存储拉链的格式 我读过关于没有IN-LI

我有一个类似这样的问题:

SELECT ID FROM SomeTable WHERE ZipCode IN (SELECT Zip FROM SomeOtherTable)
这是预期的工作,但我需要有一个类似的命令。一些美国邮政编码是XXXXX-XXXX。我需要语句只匹配前5个字符,即使它有更多字符

我的PHP邮政编码检查是:

preg_match("/^([0-9]{5})(-[0-9]{4})?$/i",$zip_code) 
显示如何检查拉链以存储拉链的格式

我读过关于没有IN-LIKE命令和使用REGEXP的文章,但我不知道如何将REGEXP与select语句一起使用


如何将此MySQL语句更改为仅按前5个字符匹配ZIP?

您可以将查询更改为:

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

顺便说一句,如果某个其他表的每个邮政编码都有多条记录,您可以通过向内部查询添加DISTINCT来加快速度,这样它只会生成一个唯一的邮政编码列表。请参阅。

本教程末尾使用的左或右-

看起来应该可以工作,但由于某些原因,substr和substring不会返回任何内容。它返回一行,但为空。我试图使从其他表中选择SUBSTR(Zip,0,5)变得简单,它返回一堆空白结果。我尝试将Zip更改为“zipcode”之类的文本值,但仍然没有任何结果。
SUBSTR
不是基于零的。尝试
SUBSTR(ZipCode,1,5)
无法理解如何实现这一点。它是直接使用1值的,但不确定如何使用select语句。