SELECT *
FROM `thread`
WHERE forumid NOT IN (1,2,3) AND IF(LEFT(title, 1) = '#', 1, 0)
ORDER BY title ASC
我有這個查詢,它會選擇一些東西,如果它以#開頭。我想要做的是,如果#是作爲一個值給出的,它將查找數字和特殊字符。或者任何不是普通信件的東西。MySQL - 如果它以數字或特殊字符開頭
我該怎麼做?
SELECT *
FROM `thread`
WHERE forumid NOT IN (1,2,3) AND IF(LEFT(title, 1) = '#', 1, 0)
ORDER BY title ASC
我有這個查詢,它會選擇一些東西,如果它以#開頭。我想要做的是,如果#是作爲一個值給出的,它將查找數字和特殊字符。或者任何不是普通信件的東西。MySQL - 如果它以數字或特殊字符開頭
我該怎麼做?
如果您想選擇所有其行 「稱號」 不以字母開頭,使用REGEXP:
SELECT *
FROM thread
WHERE forumid NOT IN (1,2,3)
AND title NOT REGEXP '^[[:alpha:]]'
ORDER BY title ASC
查找更多關於REGEXP in MySQL's manual。
這是可能的,你可以嘗試將它轉換爲一個char:
CAST('#' AS CHAR)
,但我不知道這是否會爲井號工作(又名英鎊符號:)),因爲這是用於啓動符號在MySQL評論
SELECT t.*
FROM `thread` t
WHERE t.forumid NOT IN (1,2,3)
AND INSTR(t.title, '#') = 0
ORDER BY t.title
使用INSTR得到一個給定的字符串的位置 - 如果要在一個字符串開始,檢查0(可能是1 - 如果它是一個基於零個或一個文檔沒有說明) 。
我是一個真正的MySQL新手。 NOT IN條款只是爲了將其放到上下文中而已。 請問你能多解釋一下:) – 2009-07-31 18:16:44
只是用`AND IF(LEFT(title,1)='#',1,0)`替換`AND IF(LEFT(title,1)= CAST(' 'AS CHAR),1,0)`,但就像我說過的,我不知道它是否會起作用w /八角形 – Jason 2009-07-31 18:20:21