SQL正则表达式的工作方式错误

时间:2016-01-03 23:10:05

标签: mysql sql

我尝试构建一个SQL语句,按以下顺序检索用户名

  • 首先,返回以阿拉伯字母开头的名称,然后是以英文字母开头的名称,然后是以特殊字符开头的名称。
  • 然后按升序对三组中的每一组进行排序。

这是我的代码:

SELECT `name` FROM `user` 
order by case when substring(name,1,1) like 'N[أ-ي]' then 1
              when substring(name,1,1) like '[a-zA-Z]' then 2
              else 3
              end
        ,name

问题是案例部分总是返回3,因此语句按默认顺序排序名称(首先是特殊字符,然后是英文字母,然后是阿拉伯字母)。我的查询中有什么问题?

1 个答案:

答案 0 :(得分:3)

你需要使用正则表达式,而不是......(因为你使用正则表达式)

SELECT `name` FROM `user` 
order by case when substring(name,1,1) regexp 'N[أ-ي]' then 1
              when substring(name,1,1) regexp '[a-zA-Z]' then 2
              else 3
              end
        ,name

参考:MySQL CASE statement and REGEXP