MySQL使用LIKE匹配部分字符串

时间:2014-07-29 14:02:55

标签: mysql sql sql-like

我尝试创建一个MySQL查询,当提供邮政编码时,该查询将返回一行(或更多,但我只对单行感兴趣)区域建议。

所以,我有一张像这样的表

area_id | postcode_start
1       | NE
2       | DL
3       | DL1
4       | DL2
5       | DL6
...

我希望提供一个邮政编码,例如DL5 8TB,并在第一个字符匹配时返回行1 | DL

另一个示例DL6 4GH会返回两行,5 | DL62 | DL

SELECT *
    FROM (`area_postcodes`)
    WHERE CONCAT(LOWER(`area_postcodes`.`postcode_start`),'%')
        LIKE 'dl5 8tb';

显然它是一个有效的查询,但它总是返回一个空集。

您已经看到我已将通配符%添加到查询的另一侧,但它似乎无法正常工作,我也不知道在哪里可以甚至考虑猜测如何去做,它几乎就像正常的MySQL LIKE查询相反。

1 个答案:

答案 0 :(得分:5)

你非常接近:

SELECT 
    * 
FROM 
    area_postcodes
WHERE
    'dl5 8tb' LIKE CONCAT(postcode_start, '%');