MySQL查询 - 选择邮政编码匹配

时间:2010-07-12 12:40:18

标签: mysql

我需要根据字段的前2个字符进行选择,例如

SELECT * from table WHERE postcode LIKE 'rh%'

但是这会在“邮政编码”字段中的任何一点选择包含这2个字符的任何记录吗?我需要一个只选择前2个字符的查询。任何指针?

由于

3 个答案:

答案 0 :(得分:4)

您的查询是正确的。它使用“rh”搜索开始的邮政编码。

相反,如果你想在字段中的任何地方搜索包含字符串“rh”的邮政编码,你会写:

SELECT * from table WHERE postcode LIKE '%rh%'

修改

要回答您的评论,您可以使用%_之一或两者进行相对简单的搜索。正如您已经注意到的那样,%匹配任意数量的字符,而_匹配单个字符。

因此,为了匹配以“RHx”开头的邮政编码(其中x是任何字符),您的查询将是:

SELECT * from table WHERE postcode LIKE 'RH_ %'

(请注意_之后的空格)。对于更复杂的搜索模式,您需要阅读正则表达式。

进一步阅读:

http://dev.mysql.com/doc/refman/5.1/en/pattern-matching.html

http://dev.mysql.com/doc/refman/5.1/en/regexp.html

答案 1 :(得分:1)

LIKE '%rh%'将返回“rh”位于

的所有行

LIKE 'rh%'将在开头

返回所有带'rh'的行

LIKE '%rh'将返回末尾带有'rh'的所有行。

如果您只想获得前两个字符'rh',请使用MySQL SUBSTR()函数 http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_substr

答案 2 :(得分:0)

戴夫,你的方式对我来说似乎是正确的(并且可以处理我的测试数据)。使用前导%也将匹配字符串中的任何位置,这在处理邮政编码时显然是不可取的。