MySQL使用LIKE匹配部分字符串

MySQL使用LIKE匹配部分字符串,mysql,sql,sql-like,Mysql,Sql,Sql Like,我正在尝试创建一个MySQL查询,当提供邮政编码时,它将返回一行(或更多,但我只对一行)区域建议 我有一张这样的桌子 area_id | postcode_start 1 | NE 2 | DL 3 | DL1 4 | DL2 5 | DL6 ... 我希望提供一个邮政编码,例如DL5 8TB,并在第一个字符匹配时返回行1 | DL 另一个示例dl64gh将返回两行,5 | DL6和2 | DL SELECT * FROM (

我正在尝试创建一个MySQL查询,当提供邮政编码时,它将返回一行(或更多,但我只对一行)区域建议

我有一张这样的桌子

area_id | postcode_start
1       | NE
2       | DL
3       | DL1
4       | DL2
5       | DL6
...
我希望提供一个邮政编码,例如DL5 8TB,并在第一个字符匹配时返回行
1 | DL

另一个示例
dl64gh
将返回两行,
5 | DL6
2 | DL

SELECT *
    FROM (`area_postcodes`)
    WHERE CONCAT(LOWER(`area_postcodes`.`postcode_start`),'%')
        LIKE 'dl5 8tb';
显然这是一个有效的查询,但它总是返回一个空集

<>你会看到我把通配符<代码> %<代码>添加到查询的另一边,但是它似乎不起作用,我不知道还有什么地方可以考虑如何去处理它,它就像是一个普通的类似MySQL的查询的反转。

你非常接近:

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

长度为2的前缀有什么神奇的地方吗(即为什么
DL6 4GH
DL5 8TB
都不匹配区域id 2,3,4,5的所有字符?--所有这些前缀都有
D
)不,我希望邮政编码下的所有字符都开始匹配,所以
DL5 4UH
只匹配
DL
,而
DL6 7HG
将同时匹配
DL
DL6
这似乎很有效,非常感谢。谁会想到你能把专栏放在右边//fffffffff节省了我几个小时!谢谢:)