MySQL使用LIKE匹配部分字符串

Sam*_*Sam 2 mysql sql sql-like

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

所以,我有一张这样的桌子

area_id | postcode_start
1       | NE
2       | DL
3       | DL1
4       | DL2
5       | DL6
...
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

你会看到我已经将通配符添加%到了查询的另一端,但它似乎不起作用,我不知道在哪里甚至考虑猜测如何去做,它几乎就像是反向的正常MySQL LIKE查询.

VMa*_*Mai 5

你非常接近:

SELECT 
    * 
FROM 
    area_postcodes
WHERE
    'dl5 8tb' LIKE CONCAT(postcode_start, '%');
Run Code Online (Sandbox Code Playgroud)