我有一个类似的查询:
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个字符的拉链?
答案 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