我必須創建一個SQL查詢來獲取以特定字符開頭的所有行,除非傳遞給(PHP)函數的參數爲0,那麼它應該獲得每個那行不是以A - Z開頭(如#0-9。,$ etc)。MySQL:檢查是否第一個字符是_not_ AZ
什麼是最簡單和最快的方式來獲得這些行?
DB:MySQL 5.1中
柱:標題
我必須創建一個SQL查詢來獲取以特定字符開頭的所有行,除非傳遞給(PHP)函數的參數爲0,那麼它應該獲得每個那行不是以A - Z開頭(如#0-9。,$ etc)。MySQL:檢查是否第一個字符是_not_ AZ
什麼是最簡單和最快的方式來獲得這些行?
DB:MySQL 5.1中
柱:標題
SELECT *
FROM mytable
WHERE title NOT RLIKE '^[A-Z]'
SELECT *
FROM myTable
WHERE theColumn RLIKE '^[^A-Z]'
說明:
隨着RLIKE謂詞,一個括號圖案表示括號內列出的任何一個字符(允許使用指示範圍的短劃線,如這裏AZ是「A到Z」)。
注意兩個^字符;他們有一個非常明顯的含義:
第一個代表「字符串的開始」
其他字符^,中括號表示該模式應匹配是不在括號內的列表其後列出的任何字符。
有關更多詳細信息,請參閱mySQL documentation on pattern matching。
的也可以被替換地表示爲跟隨
...
WHERE theColumn NOT RLIKE '^[A-Z]'
謹慎的字:獨立於括號語法,以上二者中示出的圖案使用「前端通配符」,它只能被處理通過表/索引掃描(或至少部分掃描),並且這對於更大的表格可能相對低效。
在正則表達式中,'%'不是通配符 – Quassnoi 2010-03-19 14:15:47
@Quassnoi:良好的捕獲。我混合LIKE和RLIKE語法......現在全部修復。 – mjv 2010-03-19 14:41:04