之前写过一篇 Oracle中对数字加汉字的排序以及REGEXP_SUBSTR介绍 后来在开发的过程中又遇到相似问题.数据不一样了,按之前的使用方法是不适用的. 之前的是数字在前汉字在后,最基本的差别是数字没有反复的,而如今的数据中数字是有反复的 比方: 玫瑰园1楼 玫瑰园2楼 兴帝家园1楼 兴帝家园2楼 假设是仅仅抽取数字进行排序 会造成两个1楼在前 两个2楼在后 而想要的结果是先按同样的名字排序 再按楼号排序 第一步:截取汉字 仅仅截取正則表達式中汉字首次出现的位置(下同) REGEXP_SU…
需求:有一列NAME, varchar2类型,内容如下 以上就是已经按order by name进行排序的,但不是我们想要的结果 现在需要只按数字进行排序 第一步:抽取数字由于数字有是一位的有是两位的 所以不好用substr进行截取 我们可以使用REGEXP_SUBSTR函数,使用正则表达式从字符串中抽取子串. REGEXP_SUBSTR(name, '[0-9]+') 第二步.将varchar类型的数字转换为int类型的数字 cast(yourcol as int) 可参考:sql中,把var…
oracle 中日期的加减 加法   select sysdate,add_months(sysdate,12) from dual;        --加1年 select sysdate,add_months(sysdate,1) from dual;        --加1月 select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual;   --加1星期 select sysdate,to_char(sysdate…
1.关于number类型. 以下是从其文档中摘录出的一句话: p is the precision, or the total number of significant decimal digits, where the most significant digit is the left-most nonzero digit, and the least significant digit is the right-most known digit. Oracle guarantees th…
加法   select sysdate,add_months(sysdate,12) from dual;        --加1年 select sysdate,add_months(sysdate,1) from dual;        --加1月 select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual;   --加1星期 select sysdate,to_char(sysdate+1,'yyyy-mm-dd…
1).按拼音首字母排序 SELECT * FROM T_TABLE ORDER BY NLSSORT(NAME, 'NLS_SORT=SCHINESE_PINYIN_M'); 2).按笔画排序SELECT * FROM T_TABLE ORDER BY NLSSORT(NAME, 'NLS_SORT=SCHINESE_STROKE_M'); 3).按部首排序SELECT * FROM T_TABLE ORDER BY NLSSORT(NAME, 'NLS_SORT=SCHINESE_RADICA…
题目:https://www.nowcoder.com/practice/4d135ddb2e8649ddb59ee7ac079aa882?tpId=46&tqId=29111&tPage=3&rp=3&ru=/ta/leetcode&qru=/ta/leetcode/question-ranking 代码:这道题题目我是看了半天才看懂了,给定一个数组,数组表示一个整数值,每个位置上的数表示这个整数各个位的值,然后我们进行加1操作,这个有点类似加法运算.给出代码 c…
http://blog.csdn.net/p451933505/article/details/9272257 对Oracle中中文.数字.英文混杂形式的字段进行排序的方法: 例如: order by NLSSORT(字段名,'NLS_SORT = SCHINESE_PINYIN_M'), to_number(translate(字段名, '0123456789' || 字段名, '0123456789')) NLSSORT() 函数: 可以使用NLSSORT()函数可以改变Oralce 对汉字…
问题描述: 某小区,需要按照小区.楼栋.单元号.房间号进行排序,但是按照地址描述排序时,因为字符串中包含数字,所以造成了如下的结果, 1号楼之后应该是2号楼,但是查询结果却是10号楼 . 尝试解决 使用正则表达式替换 结果: 虽然楼栋号排序正常了,但是会发现房间号排序出现了混乱.  继续想办法 终极办法: 使用translate函数 可以发现,结果正常显示 . 以下附上translate使用方法 一.语法: TRANSLATE(string,from_str,to_str) 二.目的 返回将(所…
关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999999999999999.00') as amount 不足之处是,如果数值是0的话,会显示为.00而不是0.00. 另一需要注意的是,格式中小数点左边9的个数要够多,否则查询的数字会显示为n个符号“#”. 解决方式如下: select decode(salary,0,'0.00',(to_char…