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