PL/SQL对含有小数的数据进行排序(附上:正则表达式解读)

编程入门 行业动态 更新时间:2024-10-28 18:29:15

PL/SQL对含有<a href=https://www.elefans.com/category/jswz/34/1762221.html style=小数的数据进行排序(附上:正则表达式解读)"/>

PL/SQL对含有小数的数据进行排序(附上:正则表达式解读)

ORDER BY to_number(regexp_substr(<列名>,<正则表达式>,<起始数字>)) desc

例如将下列数据进行降序排序:

SELECT UNIT_PRICE FROM STOCK
ORDER BY TO_NUMBER(REGEXP_SUBSTR(UNIT_PRICE,'(\d+.\d+)',1)) DESC;

或者

SELECT UNIT_PRICE FROM STOCK
ORDER BY TO_NUMBER(REGEXP_SUBSTR(UNIT_PRICE,('([0-9]+.[0-9]+)',1)));

查询结果如下:


附上:对ORDER BY 表达式的解答:正则表达式和REGEXP_SUBSTR()函数。

ORDER BY to_number(regexp_substr(<列名>,’(\d+.\d+)’,1)) desc

这里运用了正则表达,字符截取,即REGEXP_SUBSTR()函数。

一、REGEXP_SUBSTR()函数——regexp_substr()函数

函数的输出值的类型是:VARCHAR类型

REGEXP_SUBSTR()函数的基本表达式:
REGEXP_SUBSTR ( source_string, pattern [, position [, occurrence [, parameters ] ] ] )

REGEXP_SUBSTR ( <列名>, <SQL标准正则表达式函数> [, <数字,开始搜索位置默认为1> [, <数字,出现位置默认为1,小于1或大于字符串长度则值为空> [, <一个或多个字符串,参数,值为c/i/e/p> ] ] ] )

<参数>:
c:默认值,使用区分大小写的匹配,匹配时,P=p。
i:不区分大小写的匹配,匹配时,P<>p。
e:如果<SQL标准正则表达式函数>有字符串表达式,会使用第一个子表达式来匹配列数据,如果<SQL标准正则表达式函数>中没有字符串表达式,就忽略e。
p:使用Perl兼容正则表达式(PRGC)方言解释模式。

二、to_number()函数:将字段的类型转换为数值型。
REGEXP:正则表达式(regular expression)
SUBSTR:字符截取函数

三、要理解正则表达式:’(\d+.\d+)’

首先需要了解如下关于正则表达式常识:
(1)\d:匹配一个数字字符,等价于[0-9];
(2)\D:匹配一个非数字字符,等价于[^0-9]
(3)|:“或”操作,使字符具有高于替换运算的优先级。
例如:“m|food”匹配“m”和"food";“(m|f)ood”匹配“mood”和"food"字符。
(4)+:匹配字符串一次或者多次。
例如:‘zo+’能匹配“zo”和“zoooo”,但是不能匹配“z”。等价于{1,}。
(5){1,}:至少匹配前面的字符串一次。
{n,}:n是个非负整数,至少匹配n次。例如:‘o{2,}’不能匹配“Bob”,但是可以匹配"Boob"和“Boooooob”中的所有o。‘o{1,}’等价于‘o+’,‘o{0,}’等价于‘o*’。
(6)* :匹配前面的字符表达式0次或者多次。
例如:zo* 可以匹配“zoo”和“z",等价于{0,}。

四、由此可以理解 '(\d+.\d+)'的含义了:
匹配小数点前的数字字符串至少一次,小数点,匹配小数点后的数字字符串至少一次。

更多推荐

PL/SQL对含有小数的数据进行排序(附上:正则表达式解读)

本文发布于:2023-07-28 19:45:18,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1291499.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:小数   数据   正则表达式   PL   SQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!