2010-07-12 76 views
1

我需要根据现场的第一个2个字符的选择,因此,例如MySQL查询 - 选择邮编匹配

SELECT * from table WHERE postcode LIKE 'rh%'

但这会选择包含的2个字符的任何任何记录指向“邮编”字段吧?我需要一个只选择前2个字符的查询。任何指针?

谢谢

回答

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

+0

非常感谢您的回复。 是的,似乎查询是选择以'RH'开头的任何邮政编码字段。这是我遇到的问题: 比方说,我只是想与RH1开始邮政编码,例如: RH1 3JS RH2 7YH 但我的查询也会选择: RH16 3NP RH17 3TH 是有一种方法可以在3(或任意数量)的字符后停止选择? 非常感谢 – Dave 2010-07-12 13:03:39

+0

非常感谢Anax的代码和链接,我已经得到了大部分查询的工作,现在我想如何,欢呼。 – Dave 2010-07-12 13:18:48

0

戴夫,你的方式似乎是正确的,我(和工作在我的测试数据)。使用前导%也会匹配字符串中的任何地方,这在处理邮编时显然是不可取的。

+0

谢谢!是的,它确实工作正常,但我有进一步的意见(见上文) – Dave 2010-07-12 13:04:13

+0

我还没有测试过,但你可能会用'_'取得一些成功。请参阅http://dev.mysql.com/doc/refman/5.1/en/pattern-matching.html – Leo 2010-07-12 13:58:36