SQL 按字符串排序,数字最后出现

SQL Order by string, numbers appear last

我有一个查询 return 我想作为排序依据的字符串列。 当我按 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+'))

请协助。

您可以使用 regexp_like()。对于升序排序:

order by (case when regexp_like(col, '^[0-9]+$') then 1 else 2 end) asc,
         col asc

您可以像这样尝试不同的方法:

order by translate(upper(col), '1234567890', 'abcdefghij')