SELECT only rows that contain only alphanumeric characters in MySQL

前端 未结 6 1170
天涯浪人
天涯浪人 2020-12-05 01:42

I\'m trying to select all rows that contain only alphanumeric characters in MySQL using:

SELECT * FROM table WHERE column REGEXP \'[A-Za-z0-9]\';


        
相关标签:
6条回答
  • 2020-12-05 02:13

    Try this

    select count(*) from table where cast(col as double) is null;
    
    0 讨论(0)
  • 2020-12-05 02:17

    Try this code:

    SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$'
    

    This makes sure that all characters match.

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

    Your statement matches any string that contains a letter or digit anywhere, even if it contains other non-alphanumeric characters. Try this:

    SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$';
    

    ^ and $ require the entire string to match rather than just any portion of it, and + looks for 1 or more alphanumberic characters.

    You could also use a named character class if you prefer:

    SELECT * FROM table WHERE column REGEXP '^[[:alnum:]]+$';
    
    0 讨论(0)
  • 2020-12-05 02:20

    Try this:

    REGEXP '^[a-z0-9]+$'
    

    As regexp is not case sensitive except for binary fields.

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

    Change the REGEXP to Like

    SELECT * FROM table_name WHERE column_name like '%[^a-zA-Z0-9]%'
    

    this one works fine

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

    There is also this:

    select m from table where not regexp_like(m, '^[0-9]\d+$')
    

    which selects the rows that contains characters from the column you want (which is m in the example but you can change).

    Most of the combinations don't work properly in Oracle platforms but this does. Sharing for future reference.

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