Oracle SQL:按数字和字母顺序排序

停电1701

我有一个名为“countries”的表和一个名为“val”的列,它是 VARCHAR2(2 CHAR)。我对此列中的值的顺序有一些问题。我不会从“val”中写入所有值(359),例如:

'AD','EC','XX','1C','1D','MR','4R','1E','TO','SK'

我想按数字顺序而不是按字母顺序对值进行排序:

'1C','1D','1E','4R','AD','EC','MR','SK','TO','XX'.

我写了这样的东西:

SELECT val FROM countries ORDER BY CASE WHEN val LIKE '[1-9]%' THEN 0 ELSE 1 END ASC;一切正常,除了前两个值“1C”和“1D”显示在表的末尾而不是开头。这很奇怪。我有 Oracle 12c。我需要帮助 !!

戈登·利诺夫

不要使用LIKE. 如果你只关心第一个值,你可以只使用字符串比较:

ORDER BY (CASE WHEN SUBSTR(val, 1, 1) BETWEEN '0' AND '9'
               THEN 0 ELSE 1
          END) ASC,
         val

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章