2010-07-12 113 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