随笔分类 - Oracle
摘要:发现问题:导入字符长度过长,无法导入? 1.varchar2(100)类型 存储字符数据 Oracle Database 最大值为4000 PL/SQL 最大值为32767 大数据类型LOB(Large Object 大型对象) 2.LOB类型 能容纳4Gb数据 一个表中可以有多个这种类型的字段 分
阅读全文
摘要:一、rollup函数 1.介绍 rollup() 俗名卷起函数,是为 group by() 的扩展函数。 使用语法:group by rollup(a,b) 说明:针对 a 列、b 列分别进行分组,再针对 (a,b) 组合列进行分组,最后汇总。 分组的顺序对结果有影响。 分组统计更加细化。 2.实操
阅读全文
摘要:一、随机抽取数据 select * from ( select * from table_name order by dbms_random.value ) where rownum < N; 解释: dbms_random 是一个可以生成随机数值或者字符串的程序包。 value() 最常用,有两种
阅读全文
摘要:在 Oracle 中有时需要使用转义特殊字符。 通常使用单引号,但这种转义方式很不直观。 select 'It''s a bird.' from dual; 另外,还可以使用 Q'' 来对特殊字符进行转义。Q 转义符通常后面使用 ! [] {} () <> 等转义符号。 任意单字节和多字节字符集 [
阅读全文
摘要:在 Oracle 中可以利用系统表 user_tables 和 all_talbes 判断表是否存在,但有时在存储过程中确认表是否存在并不方便,因此有必要封装一个函数,进行调用。 下面是函数的内容: -- 判断表是否存在 create or replace function temp_is_tabl
阅读全文
摘要:在 Oracle 中可以利用系统表 user_objects 查询表的建表时间。 -- 查询表 select * from user_objects; -- 返回 object_name -- 表名 object_type -- 类型 created -- 创建时间 last_ddl_time --
阅读全文
摘要:在 Oracle 中可以利用系统表 dba_tab_columns 查询表的列属性。 -- 查询所有列 select * from dba_tab_columns where table_name = 'TEMP_CWH_CITY'; -- 结果 TEMP_CWH_CITY CITY_CODE VA
阅读全文
摘要:在 Oracle 中可以利用系统表 user_segments 查询表的存储空间占用大小。 select segment_name as table_name, -- 表名 segment_type, -- 表类型 bytes, -- 实际大小 round(bytes/1024/1024, 2) -
阅读全文
摘要:在 Oracle 中可以通过 DBA_TABLES、ALL_TABLES、USER_TABLES 等3个视图表查询关系表信息,它们之间的关系和区别为: DBA_TABLES >= ALL_TABLES >= USER_TABLES DBA_TABLES:DBA拥有的或者可以访问的所有关系表 ALL_
阅读全文
摘要:一、背景 在复杂的跑数过程中,往往需要执行比较多的步骤,并且跑数时间较长,可以利用存储过程配合linux下的 crontab 定时任务配置执行,但有时候发生故障,跑数异常的情况下,需要进行检查。 因此有必要对跑数过程日志进行一个记录,结合今天学习到的序列(sequence)自增长,可以实践一下。 二
阅读全文
摘要:一、背景 在存储过程中看到一个语句: select sql_log_id.nextval into vcSeq_log_id from dual; dual 是 oracle 中的虚拟表 sql_log_id 是创建序列时自定义的序列名称 nextval 是获取序列的下一个值 二、序列定义 序列 (
阅读全文
摘要:一、instr()函数:字符查找函数 语法: 注:在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。 只检索一次 ,也就是说从字符的开始到字符的结尾就结束。 实例: 有点奇思妙想! 二、substr()函数:字符截取函数 语法: 实例: 三、instr结合substr
阅读全文
摘要:一、构建测试表 二、环比计算 概念 环比 = (第n月 第n 1月)/ 第n 1月 100% 同比 = (今年第n月 去年第n月)/ 去年第n月 100% 计算 因部分数据缺失,某些月份没有数据,此时可以构造一个基础表。 sql select '2019 ' || lpad(rownum, 2, '
阅读全文
摘要:一、nvl函数 功能:从两个表达式返回一个非 NULL 值。 语法: 返回值类型:字符型、日期型、日期时间型、数值型、货币型、逻辑型或 null 值。 两个表达式数据类型必须一致。 二、nvl2函数 语法: expression2 和 expression3 类型不同情况下,会强制转换为 expre
阅读全文
摘要:一、lpad函数:从左至右填充 使用格式: 注意:如果填充之后的长度比原字符串的长度短,lpad函数将会把字符串截取成从左到右的n个字符。 二、rpad函数:从右至左填充 使用格式: 三、一些其他应用 在 oracle 中, 函数可以返回当前行值。 智能点,优化下。
阅读全文
摘要:在 中可以使用 函数进行日期截取和数字截取。 一、日期截取 使用语法: 二、数字截取 使用语法: 其中,decimal 指明需要保留小数点后的位数,忽略则截去小数部分。 注意截取时并不对数据进行四舍五入,不同于round、floor和ceil等函数。
阅读全文
摘要:[TOC] 一、in 用法 语法为: 操作符允许在 子句中规定多个值。 查询相当于多个 条件的叠加,比较好理解。 查询就是先将子查询条件的记录全都查出来。 查询的子条件返回结果必须只有一个字段。 二、exists 用法 语法为: 对外表用 逐条查询,每次查询都会查看 的条件语句。 当 里的条件语句能
阅读全文
摘要:操作 Oracle 时,经常会删除一个表,当删除错误后,希望能够恢复该表,有时也希望删除表之后能够立刻释放表的空间。 通过 purge 的使用可以在 Oracle 中删除表、恢复表和空间释放。 drop table 当在 Oracle 中删除(drop)一个表时,数据库不会立刻释放表的空间,而是重命
阅读全文
摘要:删除空格 数据库中有时候数据不规范引起莫名的错误,可能是由于数据字段前后存在空格引起的。因此有必要对字段进行删除空格操作。 函数:删除数据左右两边(开头和结尾处)的空格 函数:删除数据右边(结尾处)的空格 函数:删除数据左边(开头处)的空格 注意: 函数不仅可以用于 语句中,还可以用于 等语句中。
阅读全文
摘要:在Oracle中,有时候需要写like多条件的时候,总觉得很冗余,特别繁琐,例如: 遂考虑,有没有简洁的解决方案。 最后找到 尝试一番。 缩写为: 如果要匹配以字符串开头,可以: 如果要匹配以字符串结尾,可以: 总结 全模糊匹配:regexp_like(字段名, '(匹配字符串1|匹配字符串2|匹配
阅读全文