- 博客(25)
- 收藏
- 关注
原创 Oracle CLOB处理:文本查找对比
CLOB里保存的文本是[NAME李大哥AGE20…]或者[暂无登记]业务要求:要查询出来CLOB的内容,并且找到里面有个文本是 '暂无登记’的数据。涉及到的操作:去除换行:select replace(字段名,chr(10),’’) from dual;去除回车:select replace(字段名,chr(13),’’) from dual;去掉左右空格:select trim(字段名) from dual;判断COLB的长度:select DBMS_LOB.GETLENGT
2020-08-25 14:01:20
1003
原创 Oracle 函数使用:DISTINCT
常用用于查询单个字段时去重,且要放在所有列名的前面。(当用于多个列去重,相当于将两个列按顺序组合后去重,业务中未使用过,以下不提及)作用于单个列时:select distinct t.name from t_student t ;此时作用和select t.name from t_student t group by t.name;效果相同。引申:select count(distinct t,name) from t_student t ;可以对去重后的结果计数。...
2020-08-21 17:02:32
1600
原创 Oracle 函数使用:TABLE()
业务场景:调用自定义FUNC_方法(用于分割字符串的方法)后返回值为数组类型,需要获取数组中的第一个元素(第一个字符段)。1 - 先执行查看结果select split(‘20200820-20200821’) from dual;结果:value_colunm1202008202202008212 - 查看具体函数函数方法:split(all_str,str)方法入参: 20200820-20200821 字符型方法返回:数组类型,数组定义在方法里3
2020-08-21 16:49:23
2205
1
原创 Oracle COMMENT ON 添加注释
COMMMENT ON 用来给表或表的字段加以说明,使用举例:表:T_STUDENT列:NAMECOMMENT ON T_STUDENT.NAME IS ‘NAME OF STUDENT’;
2020-07-31 17:30:00
546
原创 Oracle 查询数据库存储过程的数量 USER_OBJECTS
USER_OBJECTS 是Oracle 字典表 的视图,在PLSQL或者其他数据库客户端可以直接查看USER_OBJECTS的创建语句就可以查到包含的各种类别的信息;下面贴出来该视图的 USER_TYPE 列的类型,可对数据库内对应类型的个数进行统计,关于其他列的信息,大家自己查看视图创建语句即可。USER_OBJECTS包含了:OBJECT对象、TABLE 表、VIEW 视图、PROCEDURE 存储过程、FUNCTION 函数、INDEX 索引、TRIGGER 触发器 等类型的数据
2020-07-31 17:11:03
4306
转载 Oracle 同一列字符串拼接的两种方法
第一种:老版本可以使用wm_concatselect wm_concat(name) from tbname ;第二种:11gr2可以使用listaggselect listagg(name,’,’) within group(order by name) from tbname ;区别在于:第一种,WM_CONCAT拼接默认是 ‘,’,逗号拼接,需要其他符号时,需要再用REPLCAE函数替换。第二种,在引号内,可以直接使用需要的拼接符号,当然,要注意版本支持。...
2020-07-30 17:32:50
8728
原创 Oracle 视图:创建视图,添加新的一列
业务需求:xm:张三gh:C001bm:财务部要求在视图中显示格式:con:张三-C001-财务部create or replace view v_tjbas (select t.xm,t.gh,t.bm,t.xm||'-'||t.gh||'-'||t.bm con from tjb t);
2020-07-20 11:25:24
3450
原创 Oracle 函数使用:TRUNC
1 - 做日期格式转换select trunc(sysdate) from dual; --2020/07/16,时间格式的年月日select trunc(sysdate,‘yy’) from dual;–2020/1/1,返回当年第一天select trunc(sysdate,‘mm’) from dual;–2020/2/1,返回当月的第一天select trunc(sysdate,‘d’) from dual;–2020/2/12,返回当前星期的第一天,即星期天select trunc(sy
2020-07-16 14:43:00
214
原创 Oracle 函数使用:CONTINUE
continue和break 在FOR IN ( ) LOOPEND LOOP;中用于循环控制break用于终止循环,continue用于跳过本次循环,continue后面的zhi代码将不被执行,直接进入i+1循环。
2020-07-15 20:07:17
3816
原创 Oracle 函数使用:TRANSLATE
替换特定字符串直接上基础例子:--abcdefgaSELECT TRANSLATE('abcdefga','abc','wo') FROM DUAL;--wodefgw我遇到的实例:存储过程传入 [1,2,3,4] 数组形式的id字符串,需要在存储过程中根据id进行查询表中数据,对数据进行逐条操作。我的SQL:入参:I_STR表名:TableSELECT * FROM Table;WHEREINSTR( TRANSLATE( TRANSLATE('I_STR', '[',','
2020-07-14 18:17:14
267
转载 Oracle 总结 常用日期格式转换
转载链接:oracle常用的时间格式转换(一)全文直接转载,可以点击链接直接查看,后续有时间会对本文格式进行调整方便自己查阅。1:取得当前日期是本月的第几周SQL> select to_char(sysdate,‘YYYYMMDD W HH24:MI:SS’) from dual;20030327 4 18:16:09SQL> select to_char(sysdate,‘W’) from dual;T42:取得当前日期是一个星期中的第几天,注意星期日是第一天SQL>
2020-07-07 10:49:57
4546
原创 Oracle SQL报错 : ORA-01810 : 格式代码出现两次
错因:使用日期/字符格式转换时出现了两次MM(mm)(我之前以为是TO_DATE(TO_CHAR(date日期数据) )两次转换出现了错误,其实是因为书写格式错误)to_date('2016/8/30 23:59:59','yyyy/mm/dd hh:mm:ss')书写格式时,后面的分钟数要使用 mito_date('2016/8/30 23:59:59','yyyy/mm/dd hh:mi:ss')还要注意,24小时制 hh24to_date('2016/8/30 23:59:59','y
2020-07-07 10:37:59
1060
原创 Oracle SQL 报错:ORA-01722 无效数字
遇到一个非常长而复杂的SQL,运行一年没出错,近期可能由于部分数据变动,使得SQL运行时报错01722,耗时一天,终于解决了。首先放出来参考的博文,给了我一个好的处理方向,非常感谢。把参考的博文放在下面引用了,可以直接查看。ORACLE-023:令人烦恼的 ora-01722 无效数字曾经一段时间内写sql语句时,老是莫名其妙的报ora-01722。对于这个错误提示,尤其是对于一个复杂的sql语句,很是郁闷,因为很多时候都不知所然。通过每次碰到的总结,其实也不是那么难以解决的,主要原因是:1
2020-07-06 10:49:44
11370
原创 Oracle 函数使用:EXISTS & NOT EXISTS
exists(条件):括号里的条件为真(存在)not exists(条件):括号里的条件为假(不存在)使用示例:SELECT COUNT(1) FROM TUSER T WHERE EXISTS(T.NAME IS NOT NULL);SELECT COUNT(1) FROM TUSER T WHERE NOT EXISTS(T.NAME IS NULL);以上和 IN & NOT IN & INSTR() 类似。...
2020-06-12 11:10:12
1109
原创 Oracle 函数使用:%ROWTYPE
一般在存储过程的变量定义会涉及:// 数值类型V_COUNT NUMBER(16); V_NUMBER NUMBER(10); --字符串V_STR VARCHAR2(100); // 相当于对象类型,其数据类型和数据库表的数据结构相一致// 把查询的一条数据存进去,想使用哪个属性[列],就直接 .列名 即可V_TUSER TUSER%ROWTYPE; 涉及的用法示例:--声明好变量后,将结果赋值给V_TUSER变量SELECT * INTO V_TUSER FROM T
2020-06-12 10:40:33
774
原创 Oracle 函数使用:CURSOR游标简单案例
做一个常用的基本用法的记录,方便以后查看,cursor有多种用法,一般使用到游标说明数据处理已经有点复杂了,会结合其他关键字函数操作,复杂的需要大家自己研究。DECLARECURSOR V_USER_LIST IS SELECT * FROM TUSER;BEGIN FOR I_USER IN V_USER_LIST LOOP --每次读取一条数据,在这里进行业务处理 END LOOP; END;先写一个简单的用法,后面有时间再补充。...
2020-06-12 10:29:03
687
原创 Oracle SQL 报错:ORA-00936 缺失表达式
ORA-00936 缺失表达式错误原因情况之一,关键字使用不规范,写多或者少写了就会报错。报错可能会在别的地方标红,而不在错误的SQL位置报红,所以要细心检查,注意书写格式排版。笔者编写存储过程时,多写了一个between,简单记录一下,如下select sum(case when ((table.salary=0) or (table.age=0)) and (table.birthday between between data_1 and date_2 )then 1 else 0 e
2020-06-09 15:55:00
34811
原创 Oracle SQL 报错:ORA-00909 参数个数无效
主要是涉及:NVL(需要处理的数据,前者数据如果为空值的替换值) 函数使用nvl函数时,忘记了写逗号,或者没有写替换值。大意了。
2020-06-09 15:42:47
4675
原创 Oracle 函数使用:WITH AS
With AS类似于查询时的临时表一样。特点1-是为了在复杂逻辑实现中减少重复查询,提高可读性的一个关键字。2-它的每个查询结果都保存在内存中,且先创建的表在后续的查询中都可以使用。直接上用法with A as (select * from tablename), B as (select * from A), C as (select * from B)select * from C where ...上面是笔者认为易于理解的例子,相当于一步一步筛选出所需数据
2020-06-09 12:21:10
840
原创 Oracle 函数使用:LPAD RPAD
基本语法 LPAD( string, padded_length, [ pad_string ] )参数string : 源字符串padded_length : 最后返回的字符串的长度pad_string : 用于填充的字符,可以不填,默认为空字符实际运用情景一:如果最终返回的字符串的长度比源字符串的小,那么此函数实际上对源串进行截取处理,。如下SELECT LPAD('20190609',4) FROM DUAL操作结果:2019情景二:如果padded_length比源字符串的长
2020-06-09 12:08:01
273
原创 Oracle SQL 报错:ORA-06512 字符串缓冲区太小
Oracle: ORA-06512:字符串缓冲区太小报错的意思很简单,字符串缓冲区小了,原因:1-字符串给设定的确实很小,需要扩大。2-字符串大小本身正常,只是因为书写错误,导致读取字符串出现问题而报错,需要修改SQL。我这里是编写存储过程中,一不小心将拼接 V_SQL 的查询SQL字符串写错。--本该是这样V_SQL = SQL_1 || 参数名 || SQL_2;--错误写法,报错V_SQL = SQL_1 + 参数名 + SQL_2;大意。...
2020-06-09 10:59:04
28992
原创 Oracle SQL 报错:ORA-00972
ORA-009721 - 我的错误原因:由于调用函数处理列值的时候,括号没成对或者加号没处理好,误将计算公式内容匹配成别名。故报错别名太长。错误截图:2 - 错误示例:--函数组合的时候要注意括号的匹配,如果括号不匹配,则会把)后面的都认定为别名,会超过长度报错SELECT T.ID, to_char((nvl(num1, 0)+nvl(num2, 0)), 'FM999,999...
2019-12-08 14:17:25
1870
原创 Java 内存分配:举例分析堆栈常量池
String s = new String(“string”),产生了几个对象?引发的思考直接举栗子,一个一个分析:第一个 // 引用变量str1和str2在栈中,而helloworld在常量池中 String str1 = "hellowporld"; String str2 = "hellowporld"; System.out.println(str1 =...
2019-11-28 22:27:34
191
原创 Oracle SQL 报错:ORA-06550
Oracle存储过程报错:ORA-065501 - 报错内容2 - 报错原因3 - 调整方式4 - 原因分析1 - 报错内容PLSQL中编写完存储过程,测试使用存储过程,报错:查询出错[SQL数据集[SQL_XY*****]游标方式执行时候出现错误:java.sql.SQLException: ORA-06550: 第 1 行, 第 7 列: PLS-00306: wrong number...
2019-11-13 11:38:54
76776
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人