toNumber

Oracle数据库基本操作(三) —— DQL相关内容说明及应用

耗尽温柔 提交于 2020-05-04 04:46:40
  本文所使用的查询表来源于oracle数据中scott用户中的emp员工表和dept部门表。 一、基本语法   SQL语句的编写顺序: select 输出的列 from 表名 where 条件 group by 分组 having 分组之后的条件过滤 order by 排序;   1、伪表(dual):Oracle 对语法要求比较严格,而伪表/虚表主要用于补齐语法结构,如 select 5+5 from dual;   2、别名查询:as关键字,但可省略,如: select ename as 姓名,job 工作 from emp;   3、去除重复数据:distinct   注意:若是多列去重,必须是每一列都相同才算重复的。 select distinct job,mgr from emp;   4、空值问题   注意:null 值不能参加与SQL四则运算   null值代表不确定的内容,未知的内容,所有值跟null进行比较,结果都为null。 -- 函数: nvl 若参数1为 null ,则返回参数2, 否则返回参数1 select nvl(null,6) from dual; -- 6 select nvl(5,6) from dual; -- 5   5、字符串拼接:     通用 concat(str1,str2) 、Oracle 特有的连接符 || select

Oracle入门学习三

你说的曾经没有我的故事 提交于 2020-05-03 19:17:11
上一篇: Oracle入门学习二 学习视频: https://www.bilibili.com/video/BV1tJ411r7EC?p=26 字符串函数:length、upper、lower、initcap、 concat、instr、replace。 -- dual 常量表,没什么意义,就语法规则 -- 获取字符串长度 select length( ' 我是谁? ' ) from dual; select length( ' abcd ' ) from dual; -- 全部变成大写 select upper ( ' abcdDDDFFF ' ) from dual; -- 全部变成小写 select lower ( ' DDAFAFA ' ) from dual; -- 首字母大写化,后面的也会变成小写 select initcap( ' abcdDDD ' ) from dual; -- 从第一个字符开始截取三个字符 select substr( ' 123456789 ' , 1 , 3 ) from dual; -- 从第三个字符开始截取三个字符 select substr( ' 123456789 ' , 3 , 3 ) from dual; -- 字符串连接函数 select concat( ' ab ' , ' dc ' ) from dual; -- 替换函数

Oracle入门学习三

北战南征 提交于 2020-05-03 18:06:52
上一篇: Oracle入门学习二 学习视频: https://www.bilibili.com/video/BV1tJ411r7EC?p=26 字符串函数:length、upper、lower、initcap、 concat、instr、replace。 -- dual 常量表,没什么意义,就语法规则 -- 获取字符串长度 select length( ' 我是谁? ' ) from dual; select length( ' abcd ' ) from dual; -- 全部变成大写 select upper ( ' abcdDDDFFF ' ) from dual; -- 全部变成小写 select lower ( ' DDAFAFA ' ) from dual; -- 首字母大写化,后面的也会变成小写 select initcap( ' abcdDDD ' ) from dual; -- 从第一个字符开始截取三个字符 select substr( ' 123456789 ' , 1 , 3 ) from dual; -- 从第三个字符开始截取三个字符 select substr( ' 123456789 ' , 3 , 3 ) from dual; -- 字符串连接函数 select concat( ' ab ' , ' dc ' ) from dual; -- 替换函数

oracle多表关联查询和子查询

邮差的信 提交于 2020-04-27 08:36:24
oracle多表关联查询和子查询 一、多表关联查询 例子: SQL > create table student1 ( sid varchar ( 3 ), sname varchar ( 6 ), sage number ( 3 )); Table created. SQL > create table course1 ( sid varchar ( 3 ), cname varchar ( 8 ), cno number ( 3 )); Table created. student1表 SQL > select * from student1; SID SNAME SAGE -- - ------ ---------- 01 李逍遥 21 02 林月如 20 03 拜月 100 course1表 SQL > select * from course1; SID CNAME CNO -- - -------- ---------- 01 历史 12 02 化学 11 22 德语 18 1、内连接(inner join……on/join on):只连接匹配的行 SQL > select * from student1 inner join course1 on student1.sid = course1.sid; SID SNAME SAGE SID CNAME CNO -- -

Oracle 获取当前日期是月的第几周

时光毁灭记忆、已成空白 提交于 2020-04-27 08:35:16
函数FUNC_GET_WEEKOFMONTH: IW 是年的自然周; WW是年的第一天起开始算7天为一周 FUNCTION FUNC_GET_WEEKOFMONTH (V_PSD DATE) RETURN NUMBER IS N_WEEK NUMBER (11) := 0; BEGIN SELECT TO_CHAR (V_PSD, 'IW') - TO_CHAR (TRUNC (V_PSD, 'MM'), 'IW') + 1 INTO N_WEEK FROM DUAL; RETURN NVL (N_WEEK, 0); EXCEPTION WHEN OTHERS THEN LOGGER.ERROR (SUBSTR (SQLERRM, 1, 512) || ',Error'); RETURN 0; END FUNC_GET_WEEKOFMONTH; 获取当前日期所在月的每一周的周一~周日,结果如下图: 代码: PROCEDURE PRC_Z_WEEK_CONFIG(CUR_DATE IN VARCHAR2, EXITCODE OUT NUMBER) AS /****************************************************************************** NAME: documnet: REVISIONS: Ver Date

Oracle 日期处理函数+常用函数示例

♀尐吖头ヾ 提交于 2020-04-24 06:01:57
参考自:原文链接(非常详细) 时间相关应用示例———— select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;——2019-10-21 14:34:15 select to_char(sysdate,'ddd-day-dy-Q-WW-W') from dual;——294-星期一-4-42-3(当年第几天-星期几-星期几缩写-第几季度-当年第几周-当月第几周) select to_date('2019-10-21 14:34:15','yyyy-mm-dd hh24:mi:ss') from dual;——字符转换为日期格式 select to_char (sysdate, 'yy-mm-dd-day-dy', 'NLS_DATE_LANGUAGE = American') from dual;——19-10-21-monday -mon (以英文显示日期) select * from nls_session_parameters;——查看系统支持的日期格式 select to_number(sysdate - (sysdate-1))*24*60*60*1000 from dual;——86400000(相差多少天、时、分、秒、毫秒,相应增删乘数即可) select to_date(null) from dual;—

SQL中简单的格式转换

廉价感情. 提交于 2020-04-24 02:37:39
1.to_number() select to_number( ' 2015 ' ) from dual -- -2015 2.to_char() -- 不需要转换格式 select to_char( 2015 ) from dual -- -'2015' -- 需要转换格式 select to_char( 1 , ' $000 ' ) from dual -- - $001 select to_char( 2212 , ' $999999 ' ) from dual -- -$2212 3.to_date() -- -必须提供匹配的时间格式 -- -例子 select to_date( ' 2015/04/04 08:00:00 ' , ' yyyy-MM-dd HH24:MI:SS ' ) from dual 来源: oschina 链接: https://my.oschina.net/u/4346770/blog/3500718

转贴:110个Oracle 函数

☆樱花仙子☆ 提交于 2020-04-23 14:31:47
转载地址: https://bbs.csdn.net/topics/310021870 1. ASCII 返回与指定的字符对应的十进制数; SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual; A A ZERO SPACE --------- --------- --------- --------- 65 97 48 32 2. CHR 给出整数,返回对应的字符; SQL> select chr(54740) zhao,chr(65) chr65 from dual; ZH C -- - 赵 A 3. CONCAT 连接两个字符串; SQL> select concat(010-,88888888)||转23 高乾竞电话 from dual; 高乾竞电话 ---------------- 010-88888888转23 4. INITCAP 返回字符串并将字符串的第一个字母变为大写; SQL> select initcap(smith) upp from dual; UPP ----- Smith 5. INSTR(C1,C2,I,J) 在一个字符串中搜索指定的字符,返回发现指定的字符的位置; C1 被搜索的字符串 C2 希望搜索的字符串 I 搜索的开始位置,默认为1 J 出现的位置

01. Oracle(基础语法)

谁说我不能喝 提交于 2020-04-23 10:38:09
1. 函数 1.1 大小写转换函数 函数 描述 LOWER() 全小写 UPPER() 全大写 INITCAP() 首字母大写 1.2 字符串操作函数 函数 描述 concat() 拼接字符串 substr(字段,startIndex,endIndex) 截取字符串 length() 字符串长度 instr(字段,'字符') 指定字符出现的位置索引 trim() 取出指定字符前后的空格 1.3 数字操作函数 函数 描述 round(参数,保留几位) 向上取整 trunc(参数,保留几位) 直接取整,不四舍五入 mod(x,y) x除以y的余数 1.4 日期函数 函数 描述 add_months(date,n) 在日期date上加上一个n月 lastday(date) 返回指定日期当前月的最后一天 round(date,[fmt]) 返回一个一fmt为格式的四舍五入 trunc(date,[fmt]) 不对日期进行舍入,直接进行截取 extract(fmt from date) 提取日期中的特定部分 sysdate 返回当前系统时间 fmt: YEAR: 摄入某年的1月1日,几千半年舍去,后半年作为下一个月 MONTH: 摄入到某年的1日,即前月舍去,后半月作为下一个月 DDD: 默认,月中的某一天,最靠近的天,前半天舍去,后半天作为第二天 DAY: 舍入到最近的周的周日

【赵强老师】利用数据库触发实现复杂的安全性检查

眉间皱痕 提交于 2020-04-20 09:50:26
一、什么是触发器 数据库触发器是一个与表相关联的,存储的PL/SQL 语句。每当一个特定的数据操作语句(insert update delete)在指定的表上发出时,Oracle自动执行触发器中定义的语句序列。 触发器的应用场景如下: 复杂的安全性检查 数据的确认 数据库审计 数据的备份和审计 二、创建Oracle触发器的语法 CREATE [OR REPLACE] TRIGGER trigger_name {BEFORE | AFTER } {INSERT | DELETE | UPDATE [OF column [, column …]]} [OR {INSERT | DELETE | UPDATE [OF column [, column …]]}...] ON [schema.]table_name | [schema.]view_name [REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}] [FOR EACH ROW ] [WHEN condition] PL/SQL_BLOCK | CALL procedure_name; 其中: BEFORE 和AFTER指出触发器的触发时序分别为前触发和后触发方式,前触发是在执行触发事件之前触发当前所创建的触发器,后触发是在执行触发事件之后触发当前所创建的触发器