最近需要使用到sql的正则表达式来判断分数grade为数字, 但是在网上搜到的结果大多都会报错:
SELECT FIRST_NAME
FROM EMPLOYEES
WHERE REGEXP_LIKE(FIRST_NAME,'^al(an|yss)a$','i');
最后终于找到一个能查询成功的表达式
select grade from t_grade
where grade REGEXP '^[0-9]*$'
后面想利用case找出grade<60或grade='不及格'的信息
尝试用:
SELECT grade,
CASE
WHEN grade='不及格' THEN grade
WHEN grade REGEXP '^[0-9]*$' AND grade<60 THEN grade
ELSE NULL
END AS grade_rebuild
FROM t_grade;
发现结果是:
可以发现并没有筛选
所以要用到where进行筛选:
SELECT grade