我需要根据字段的前2个字符进行选择,例如
SELECT * from table WHERE postcode LIKE 'rh%'
但是这会在“邮政编码”字段中的任何一点选择包含这2个字符的任何记录吗?我需要一个只选择前2个字符的查询。任何指针?
由于
答案 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
答案 1 :(得分:1)
LIKE '%rh%'
将返回“rh”位于
LIKE 'rh%'
将在开头
LIKE '%rh'
将返回末尾带有'rh'的所有行。
如果您只想获得前两个字符'rh',请使用MySQL SUBSTR()函数 http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_substr
答案 2 :(得分:0)
戴夫,你的方式对我来说似乎是正确的(并且可以处理我的测试数据)。使用前导%也将匹配字符串中的任何位置,这在处理邮政编码时显然是不可取的。