我有一个返回字符串列的查询,我希望按其排序。 当我按ASC / DESC排序时,我得到了相同的结果。 这是一个输出示例:
AVI
ksky site
Secure East
Shlomi
VSEStaging
1200165
120186
120186
120186
120032
但我想在字母字符串前面加上数字。 例如对于ASC:
1200165
120186
120186
120186
120032
AVI
ksky site
Secure East
Shlomi
VSEStaging
例如对于DESC:
VSEStaging
Shlomi
Secure East
ksky site
AVI
120032
我目前使用REGEX:
REGEXP_SUBSTR(UPPER(COLUMN_NAME), '^\D*') ,
TO_NUMBER(REGEXP_SUBSTR(UPPER(COLUMN_NAME), '\d+'))
请协助。
答案 0 :(得分:4)
您可以使用regexp_like()
。对于升序排序:
order by (case when regexp_like(col, '^[0-9]+$') then 1 else 2 end) asc,
col asc
答案 1 :(得分:0)
你可以尝试不同的东西:
order by translate(upper(col), '1234567890', 'abcdefghij')