SELECT *
FROM `thread`
WHERE forumid NOT IN (1,2,3) AND IF( LEFT( title, 1) = '#', 1, 0)
ORDER BY title ASC
我有这个查询,如果它以#开头,将选择一些东西。我想要做的是,如果将#作为值给出,它将查找数字和特殊字符。或者任何不正常的信件。
我该怎么做?
答案 0 :(得分:17)
如果要选择“标题”不以字母开头的所有行,请使用REGEXP:
SELECT *
FROM thread
WHERE forumid NOT IN (1,2,3)
AND title NOT REGEXP '^[[:alpha:]]'
ORDER BY title ASC
答案 1 :(得分:1)
可能你可以尝试将其作为char来投射:
CAST('#' AS CHAR)
但我不知道这是否适用于octothorpe(aka pound symbol :))因为这是在MySQL中开始评论的符号
答案 2 :(得分:1)
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 - 文档没有说明它是零还是一个)。