2010-10-17 76 views
0

我想打一個MySQL的選擇,但我需要選擇兩種類型的數據,一個開始於0256和其他與0356.我可以使用:我可以使用LIKE兩次嗎?

SELECT * FROM table WHERE tel LIKE '0256%' AND '0356%'

感謝, 塞巴斯蒂安

編輯 我有在PHP這些查詢的問題。 上面的查詢,在MySQL工作正常,但在PHP中我只得到了LIKE '0256%'

回答

11

結果你可能在尋找這樣的查詢:

SELECT *    /* Select all columns */ 
FROM table    /* from the table named 'table' */ 
WHERE tel LIKE '0256%' /* where the field 'tel' starts with '0256' */ 
    OR tel LIKE '0356%' /* or where the field 'tel' start with '0356' */ 
4

您使用和替代或有2個問題,並沒有第二個參數之前LIKE

SELECT * FROM table WHERE tel LIKE '0256%' OR tel LIKE '0356%' 
+1

您需要'OR'後面的'tel'。 – Vlad 2010-10-17 21:20:16

+0

@Vlad,感謝良好的捕獲 – 2010-10-17 21:22:06

0

您也可以使用這個正則表達式:

SELECT * 
FROM table 
WHERE tel RLIKE '0[23]56.*' 

隨着更多數字選項的添加(假設它們會),這可能會使事情變得更加清晰。它也可能會使查詢更快,但必須執行分析以查看事實是否如此。

+1

MySQL中的正則表達式確保表掃描 - 除非通配符左側,否則LIKE替代方法不會更有效。 – 2010-10-17 21:22:48

+0

我不知道MySQL的正則表達式優化是有限的,但希望在未來的版本中優化的機會會增加。 – 2010-10-17 21:24:17

相關問題