MySQL使用LIKE匹配部分字符串
我正在尝试创建一个MySQL查询,当提供邮政编码时,它将返回一行(或更多,但我只对一行)区域建议 我有一张这样的桌子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 (
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节省了我几个小时!谢谢:)