MySQL - If It Starts With A Number Or Special Character

前端 未结 3 2087
独厮守ぢ
独厮守ぢ 2020-12-15 01:21
SELECT * 
FROM `thread` 
WHERE forumid NOT IN (1,2,3) AND IF( LEFT( title, 1) = \'#\', 1, 0)
ORDER BY title ASC

I have this query which will select

相关标签:
3条回答
  • 2020-12-15 01:49
      SELECT t.* 
        FROM `thread` t
       WHERE t.forumid NOT IN (1,2,3) 
         AND INSTR(t.title, '#') = 0
    ORDER BY t.title
    

    Use the INSTR to get the position of a given string - if you want when a string starts, check for 0 (possibly 1 - the documentation doesn't state if it's zero or one based).

    0 讨论(0)
  • 2020-12-15 01:59

    If you want to select all the rows whose "title" does not begin with a letter, use REGEXP:

      SELECT * 
        FROM thread 
       WHERE forumid NOT IN (1,2,3)
         AND title NOT REGEXP '^[[:alpha:]]'
    ORDER BY title ASC
    
    • NOT means "not" (obviously ;))
    • ^ means "starts with"
    • [[:alpha:]] means "alphabetic characters only"

    Find more about REGEXP in MySQL's manual.

    0 讨论(0)
  • 2020-12-15 02:05

    it's POSSIBLE you can try to cast it as a char:

    CAST('#' AS CHAR)
    

    but i don't know if this will work for the octothorpe (aka pound symbol :) ) because that's the symbol for starting a comment in MySQL

    0 讨论(0)
提交回复
热议问题