Sql 按空格分隔的字符串列排序
名为Sql 按空格分隔的字符串列排序,sql,oracle11g,toad,Sql,Oracle11g,Toad,名为ASORT的表具有以下定义和插入(按指定顺序): 但理想的顺序是空格后的所有数字也应按如下所示进行排序 请提出查询以获得所需结果 谢谢 您可以使用regexp\u substr()从分隔列表中提取第n个元素。然后,您可以将这些值转换为数字并按顺序排列。比如: ORDER BY cast(replace(regexp_substr(b||' ', '[0-9]+ ', 1, 1), ' ', '') as int) NULLS FIRST, cast(replace(re
ASORT
的表具有以下定义和插入(按指定顺序):
但理想的顺序是空格后的所有数字也应按如下所示进行排序
请提出查询以获得所需结果
谢谢 您可以使用
regexp\u substr()
从分隔列表中提取第n个元素。然后,您可以将这些值转换为数字并按顺序排列。比如:
ORDER BY cast(replace(regexp_substr(b||' ', '[0-9]+ ', 1, 1), ' ', '') as int) NULLS FIRST,
cast(replace(regexp_substr(b||' ', '[0-9]+ ', 1, 2), ' ', '') as int)
是SQL Fiddle。在SQL Fiddle中,如果我从查询中删除null FIRST子句,则顺序会混乱。你能不能先帮我理解NULLS的作用。@WamglindCarmasaic。它只指定
NULL
值的位置。当我把查询复制到这里时,我似乎错过了它。
ORDER BY cast(replace(regexp_substr(b||' ', '[0-9]+ ', 1, 1), ' ', '') as int) NULLS FIRST,
cast(replace(regexp_substr(b||' ', '[0-9]+ ', 1, 2), ' ', '') as int)