2015-09-25 36 views
1

我去過MySQL網站的正則表達式頁面,無法正確查詢。我有一個鏈接列表,我想查找不包含句點的無效鏈接。這裏是我的代碼無法正常工作:MySQL - 需要查找沒有句點的記錄

select * from `links` where (url REGEXP '[^\\.]') 

它返回在整個數據庫中的所有行。我只是想讓它顯示'url'不包含句點的行。謝謝你的幫助!

回答

0

你的正則表達式匹配任何東西其中包含一個字符不是一段時間。因此,如果它包含foo.bar,則正則表達式匹配f併成功。你可以這樣做:

WHERE url REGEXP '^[^.]*$' 

錨和重複操作使這個檢查字符不是句點。或者,你可以這樣做:

WHERE LOCATE(url, '.') = 0 

BTW,你不需要逃避.當它在正則表達式中[]

+0

感謝您的深入解釋。非常感激! – pkSML

2
SELECT c1 FROM t1 WHERE c1 NOT LIKE '%.%' 
+0

這證明是最快的方法。謝謝!順便說一句,我會upvote你的答案,但我沒有15聲望呢lol – pkSML

+0

你可以把它標記爲接受/回答。 – Jack

0

使用regexp似乎在這裏是一個矯枉過正。一個簡單的like操作者會做的伎倆:

SELECT * FROM `links` WHERE url NOT LIKE '%.% 

編輯:

說了這麼多,如果你真的想否定regexp,只需使用not regexp

SELECT * FROM `links` WHERE url NOT REGEXP '[\\.]'; 
+0

感謝您的選擇!我正在學習:) – pkSML

相關問題