使用SQL来清除非alphanumber值

时间:2017-11-07 01:26:49

标签: mysql sql

我正在尝试返回行中的列只包含字母数字值而没有符号等的行。

  

表CARS_ALL
  型号 ----- 颜色 --------- 所有者   
菲亚特---------蓝< 3 -------保罗   
福特--------红色!$ƒƒ-----莎莉   
日产-----红------------布拉德

所以我想使用一个仅返回第3行的限定符,因为其中两个颜色值包含非字母数字字符

Select * FROM CARS_ALL WHERE COLOR LIKE '%[^a-zA-Z0-9 ]%'

但这不起作用......

2 个答案:

答案 0 :(得分:2)

MySQL的LIKE运算符仅支持非常原始的模式匹配。相反,请在此处使用REGEXP

SELECT *
FROM CARS_ALL
WHERE COLOR NOT REGEXP '.*[^A-Za-z0-9].*';

Demo

答案 1 :(得分:0)

我会这样做:

Select * 
from CARS_ALL 
where COLOR regexp '^[^a-zA-Z0-9 ]+$'

这假设连字符是空格。如果它是连字符,那么它应该包含在字符集中。

Select * 
from CARS_ALL 
where COLOR regexp '^[^a-zA-Z0-9\-]+$'