我有一个名为“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] 删除。
我来说两句