MySQL - 如果它以数字或特殊字符开头

时间:2009-07-31 18:12:31

标签: mysql select

SELECT * 
FROM `thread` 
WHERE forumid NOT IN (1,2,3) AND IF( LEFT( title, 1) = '#', 1, 0)
ORDER BY title ASC

我有这个查询,如果它以#开头,将选择一些东西。我想要做的是,如果将#作为值给出,它将查找数字和特殊字符。或者任何不正常的信件。

我该怎么做?

3 个答案:

答案 0 :(得分:17)

如果要选择“标题”不以字母开头的所有行,请使用REGEXP:

  SELECT * 
    FROM thread 
   WHERE forumid NOT IN (1,2,3)
     AND title NOT REGEXP '^[[:alpha:]]'
ORDER BY title ASC
  • NOT 表示“不”(显然;))
  • ^ 表示“以”开头“
  • [[:alpha:]] 表示“仅限字母字符”

详细了解REGEXP in MySQL's manual

答案 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 - 文档没有说明它是零还是一个)。