oracle
字符串
排序
oracle
字符串
排序
oracle
字符串
数字
部分
排序
oracle
字符串
排序
select * from table order by to_number(id)
oracle
字符串
数字
部分
排序
select * from table order by to_number(regexp_replace(id,'[^0-9]'))
字符串
转
数字
,需要考虑2点 第一点:
字符串
为空,需要先将空的
字符串
为 空、字母、中文、标点等去掉,只能将为
数字
的转换为数值 ;至于非阿拉伯
数字
的情况就要业务给出处理方式,下面是一个样例。
select case when regexp_replace('22dd','[0-9,.]', '') IS NULL then to_number('22dd') else 0 end from du...
思路一:将字母转成ASCII码值进行
排序
(最开始想到的这个思路,但该方法待优化!!!)
ORDER BY CASE WHEN ASCII(字段) < 58 THEN TO_NUMBER(字段) ELSE ASCII(字段) END
[0-9]的ASCII码值为[48-57]
[A-Z]的ASCII码值为[65-90]
[a-z]的ASCII码值为[97-122]
这里直接判断小于58就认为是
数字
,
数字
时取数值,
数字
大于65时就会和字母冲突,当前业务中
数字
最大为20(无
其中,string 是要转换的
字符串
,format 是指定日期时间格式的
字符串
。例如,如果要将
字符串
'2023-02-28 10:30:00' 转换为日期时间数据,可以使用以下语句:
SELECT TO_DATE('2023-02-28 10:30:00', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
这将返回一个日期时间数据,表示 '2023-02-28 10:30:00'。
需要注意的是,format 参数中使用的格式化
字符串
必须与
字符串
的格式完全匹配,否则将会出现转换错误。可以参考
Oracle
官方文档中有关日期时间格式的说明来选择正确的格式化
字符串
。