Oracle学习(四)_SQL函数
- --第一部分:SQL基础
- --ch1 简单查询
- --ch2 查询基本概念
- --ch3 数据过滤
- --第二部分:多表操作
- --ch4 集合理论
- --ch5 内连接
- --ch6 外连接
- --ch7 子查询
- --第三部分:数据分组
- --ch8 简单统计
- --ch9 数据分组
- --ch10 分组数据过滤
- --第四部分:SQL函数
- --ch11 内置函数
- --ch12 case表达式
- --第五部分:DML语句
- --ch13 插入数据
- --ch14 修改数据
- --ch15 删除数据
- --------------------------------------------------------------------------
- --第四部分:SQL函数
- 【ch11 内置函数】
- --11.1使用单行函数
- /*
- 字符函数
- 数字函数
- 转换函数
- 日期函数
- */
- --字符函数
- --ascii(x)返回字符x的ascii码
- SELECT ascii('a'), ascii('A'), ascii('z'), ascii('Z'), ascii(0), ascii(9)
- FROM dual;
- --chr(x)返回ascii码为x的字符
- SELECT CHR(97),CHR(65),CHR(122),CHR(90) FROM dual;
- --concat(x,y)将y附加在x上,并返回附加后的字符串
- SELECT first_name,last_name,concat(first_name, last_name) allname FROM customers;
- --initcap(x)将x中的每个单词的首字母转换为大写
- SELECT product_id,description, initcap(description) ad
- FROM products
- WHERE product_id < 4;
- --instr(x,find_str,star,occur)
- --在x中查找字符串find_str,然后返回find_str所在的位置。
- --start指定哪个位置开始查找,occur指定find_str出现的次数
- SELECT NAME, instr(NAME, 'Science') FROM products WHERE product_id = 1;
- SELECT NAME, instr(NAME, 'e', 1, 2) FROM products WHERE product_id = 1;
- --可用于日期
- SELECT customer_id ,dob,INSTR(dob,'01') FROM customers WHERE customer_id = 1;
- --可以指定occur为负数,表示从字符串尾部开始向左查找
- SELECT NAME, instr(NAME, 'n', -2, 2) FROM products WHERE product_id = 1;
- --length(x)返回x中字符的个数
- SELECT NAME, length(NAME) FROM products;
- --lower(x)将x中的字母转换为小写
- --upper(x)将x中的字母转换为大写
- SELECT first_name,upper(first_name), last_name,lower(last_name) FROM customers;
- --lpad(x,width,pad_str)在x的左边补齐pad_str字符使得其长度为width
- --rpad(x,width,pad_str)在x的右边补齐pad_str字符使得其长度为width
- SELECT name,rpad(NAME, 30, '.'),price, lpad(price, 8, '*+')
- FROM products
- WHERE product_id < 4;
- --ltrim(x,trim_str)从x中的左边截去一些字符,直到x中有字符不出现在trim_str中为止
- --rtrim(x,trim_str)从x中的右边截去一些字符,直到x中有字符不出现在trim_str中为止
- --trim(leading|trailing|both y from x)从x中截去单个字符y
- SELECT ltrim(' Hello Gail Seymour!'),
- rtrim('Hi doreen Oakley!abcabc', 'akb!c'),
- TRIM(TRAILING '0' FROM '000Hey Steve Button!00000')
- FROM dual;
- --nvl(x,value)若x为空,则返回value,否则返回x
- --nvl2(x,v1,v2)若x为空,则返回v2,否则返回v1
- SELECT customer_id,
- phone,
- nvl(phone, 'Unkown phone number'),
- dob,
- nvl(dob, SYSDATE),
- phone,
- nvl2(phone, 'Known', 'Unknown')
- FROM customers;
- --replace(x,search_str,replace_str)在x中查找search_str,并将其替换为replace_str
- SELECT name,REPLACE(NAME, 'Science', 'Physics')
- FROM products
- WHERE product_id = 1;
- --substr(x,start,length)返回x中的一个子字符串,子字符串从start开始,子字符串长度为length
- SELECT name, substr(NAME, 2, 7), substr(NAME, -5, 2)
- FROM products
- WHERE product_id < 4;
- --11.2函数组合
- SELECT NAME, upper(substr(NAME, 2, 8)) FROM products WHERE product_id < 4;
- --11.3数字函数
- --abs(x)返回x的绝对值
- SELECT ABS(-1.222) FROM dual;
- SELECT product_id, price, price - 30, abs(price - 30)
- FROM products
- WHERE product_id < 4;
- --ceil(x)返回大于或等于x的最小整数
- SELECT ceil(5.8), ceil(-5.2) FROM dual;
- --floor(x)返回小于或等于x的最大整数
- SELECT floor(5.8), floor(-5.2) FROM dual;
- --mod(x,y)返回x除以y的余数
- SELECT MOD(8, 3), MOD(8, 4) FROM dual;
- --power(x,y)返回x的y次幂
- SELECT POWER(2,3) FROM dual;
- --round(x,y)返回对x进行取整的结果:若y不指定,对小数点后第一位四舍五入,若y>0,对第y+1位小数四舍五入;若y<0,对小数点左边的y位四舍五入
- SELECT round(5.75), round(5.75, 1), round(15.75, -1) FROM dual;
- --sign(x)返回x的符号。若x<0,返回-1;若x=0,返回0;若x>0,返回1
- SELECT sign(-5), sign(0), sign(5) FROM dual;
- --trunc(x,y)用于计算对x进行截断的结果:若y不指定,对小数点后第一位截断,若y>0,对第y+1位小数截断;若y<0,对小数点左边的y位截断
- SELECT trunc(5.75), trunc(5.76, 1), trunc(15.75, -1) FROM dual;
- --11.4转换函数
- --to_char(x,format)用于将x转换为一个字符串。可以用format指定格式
- SELECT to_char(123.456) FROM dual;
- SELECT to_char(12345.67, '99,999.99') FROM dual;
- --to_number(x,format)用于将x转换为一个数字。可以用format指定格式
- SELECT to_number('9455.335') FROM dual;
- SELECT to_number('-$12,345.67', '$99,999.99') FROM dual;
- --使用to_char()和to_date()转换时间值
- --to_char(x,format)将数字或时间值x转换为字符串。
- --to_date(x,format)将字符串x转换为date类型
- --使用to_char()将时间值转换为字符串
- SELECT sysdate,to_char(SYSDATE,'yyyy-mm-dd') FROM dual;
- SELECT customer_id, to_char(dob, 'MONTH DD,YYYY') FROM customers;
- SELECT to_char(SYSDATE,'MONTH DD,YYYY,HH24:MI:SS') FROM dual;
- /*常用format参数
- YYYY四位年份
- MM二位月份
- MONTH月份的全拼,全部大写
- MON月份的前3个字母
- WW本年中的第几周
- W本月中的第几周
- DD本月中的第几天
- D本周中的第几天
- DAY周几的全名,全部大写
- HH24 24小时格式小时数
- HH 12小时格式小时数
- MI分钟
- SS秒数
- FF[1..9]带有小数的秒数
- 分隔符:-/,.;: "text"
- */
- SELECT to_char(SYSDATE,'D') FROM dual;
- --使用to_date()将字符串转换为时间值
- SELECT to_date('5月 2,2006', 'month dd,yyyy') FROM dual;
- SELECT to_date('20120808','yyyy-mm-dd') FROM dual;
- --11.5使用时间值函数
- --add_months(x,y)返回x加上y个月后的结果,若y为负值,则从x中减去y个月
- SELECT add_months(SYSDATE, 3), add_months(trunc(SYSDATE), -3) FROM dual;
- --last_day(x)返回包含x月的最后一天
- SELECT last_day(DATE'2012-12-1') FROM dual;
- --months_between(x,y)返回x和y之间有几个月,如果x比y晚,就返回正数,否则为负数
- SELECT months_between(SYSDATE + 1000, SYSDATE) FROM dual;
- --next_day(x,day)返回从x开始,下一个day的时间值
- SELECT next_day(DATE'2012-5-23','星期一') FROM dual;
- SELECT next_day(DATE'2012-5-23',2) FROM dual;
- --round(x,unit)对x进行取整。
- SELECT round(SYSDATE, 'YYYY') FROM dual;
- SELECT round(SYSDATE, 'MM') FROM dual;
- --sysdate()返回数据库所在操作系统中当前设置的时间值
- SELECT SYSDATE FROM dual;
- --trunc(x,unit)对x进行截断。
- /*
- YYYY四位年份
- MM二位月份
- WW本年中的第几周
- W本月中的第几周
- DD本月中的第几天
- D本周中的第几天
- HH24 24小时格式小时数
- HH 12小时格式小时数
- MI分钟
- */
- SELECT trunc(SYSDATE, 'Y') FROM dual;
- SELECT trunc(SYSDATE, 'MM') FROM dual;
- SELECT SYSDATE+7,trunc(SYSDATE+7, 'W') FROM dual;
- SELECT trunc(SYSDATE, 'DD') FROM dual;
- SELECT trunc(SYSDATE+7, 'D') FROM dual;
- SELECT trunc(SYSDATE, 'HH') FROM dual;
- SELECT trunc(SYSDATE, 'MI') FROM dual;
- --11.6使用translate()函数
- --translate(x,from_str,to_str)函数在x中查找from_str中的字符,并将其转换成to_str中对应的字符
- SELECT product_id,
- NAME,
- translate(NAME,
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
- 'EFGHIJKLMNOPQRSTUVWXYZABCDefghijklmnopqrstuvwxyzabcd')
- FROM products;
- SELECT translate('I am Chinese, I love China', 'China', '中国') "Translate example"
- FROM dual;
- SELECT translate('我是中国人,我爱中国', '中国', 'China') "Translate example"
- FROM dual;
- --11.7使用decode()函数
- --decode(value,search_value,result,default_value)对value与search_value进行比较。如果这两个值相等
- --则返回result,否则返回default_value
- --相当于在SQL中执行if语句
- SELECT DECODE(1,1,2,3) FROM dual;
- SELECT DECODE(1,2,1,3) FROM dual;
- SELECT prd_id,
- available,
- decode(available,
- 'Y',
- 'Product is available',
- 'Product is not available')
- FROM more_products;
- --可以向decode传递多个参数
- SELECT product_id,
- product_type_id,
- decode(product_type_id,
- 1,
- 'Book',
- 2,
- 'Video',
- 3,
- 'DVD',
- 4,
- 'CD',
- 'Magazine')
- FROM products;
- 【ch12 case表达式】
- --与decode类似,相当于在SQL中执行if语句
- CASE 表达式有两种格式:
- CASE 简单表达式,它通过将表达式与一组简单的表达式进行比较来确定结果。
- CASE 搜索表达式,它通过计算一组逻辑表达式来确定结果。
- 这两种格式都支持可选的 ELSE 参数。
- CASE 可用于允许使用有效表达式的任意语句或子句。
- 例如,可以在 SELECT、UPDATE、DELETE 和 SET 等语句以及 select_list、IN、WHERE、ORDER BY 和 HAVING 等子句中使用 CASE。
- --case简单表达式:
- CASE input_expression
- WHEN when_expression1 THEN result_expression1
- WHEN when_expression2 THEN result_expression2
- ...
- [ ELSE else_result_expression ]
- END
- SELECT product_id,
- product_type_id,
- CASE product_type_id
- WHEN 1 THEN
- 'Book'
- WHEN 2 THEN
- 'Video'
- WHEN 3 THEN
- 'DVD'
- WHEN 4 THEN
- 'CD'
- ELSE
- 'Magazine'
- END casen
- FROM products;
- --使用case搜索表达式
- CASE
- WHEN Logical_expression1 THEN result_expression1
- WHEN Logical_expression2 THEN result_expression2
- ...
- [ ELSE else_result_expression ]
- END
- SELECT product_id,
- product_type_id,
- CASE
- WHEN product_type_id = 1 THEN
- 'Book'
- WHEN product_type_id = 2 THEN
- 'Video'
- WHEN product_type_id = 3 THEN
- 'DVD'
- WHEN product_type_id = 4 THEN
- 'CD'
- ELSE
- 'Magazine'
- END casen
- FROM products;
Oracle学习(四)_SQL函数的更多相关文章
- Oracle学习(四):组函数
1.知识点:能够对比以下的录屏进行阅读 SQL> --组函数类型:avg,count,max.min,sum SQL> --工资总额 SQL> select sum(sal) fro ...
- Oracle学习笔记—常用函数
这里记录一些oracle常用的函数. TO_NUMBER()函数 将字符串类型转换成一个 number 类型的值. SELECT TO_NUMBER('100.00') FROM DUAL; TO_C ...
- Oracle学习笔记——常用函数总结
在平时写PL/SQL的时候,经常要用到很多系统自带的函数,而这些函数用起来非常好用,但是每次用完以后,就又忘到脑后了,为了加深自己的映象,以及对这些函数做一个全面的总结,就有了今天这篇文章. 首先这就 ...
- Oracle系列四 单行函数查询语句
单行函数 操作数据对象 接受参数返回一个结果 只对一行进行变换 每行返回一个结果 可以转换数据类型 可以嵌套 参数可以是一列或一个值 包含:字符,数值,日期,转换,通用 字符函数 1.大小写控制函数: ...
- oracle学习 四(持续更新中)无法为表空间 MAXDATA 中的段创建 INITIAL 区
解决建立表的时候出现的 ORA-01658: 无法为表空间 MAXDATA 中的段创建 INITIAL 区 出现这个问题是因为表空间的大小不足,可以给他扩容这样的话也会多出来一个数据文件.具体写法如下 ...
- Oracle学习笔记之四sp1,Oracle 11g的常用函数
从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i) 分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...
- day 83 Vue学习四之过滤器、钩子函数、路由、全家桶等
Vue学习四之过滤器.钩子函数.路由.全家桶等 本节目录 一 vue过滤器 二 生命周期的钩子函数 三 vue的全家桶 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 Vue的过滤 ...
- 《ORACLE数据库管理与开发》第三章学习之常用函数记录
<ORACLE数据库管理与开发>第三章学习之常用函数记录 注:文章中的*代表所要操作的列名 1.lower(*)/upper(*),将此列下的值转为小写/大写 2.initcap(*):把 ...
- Oracle学习笔记:trunc函数
在Oracle中可以使用trunc函数进行日期截取和数字截取,具体使用方法如下: 1.trunc(for dates) 日期截取 语法:trunc(date,[fmt]) select trunc(s ...
- Oracle学习笔记:wm_concat函数合并字段
在Oracle中使用wm_concat(column)可以实现字段的分组合并,逗号分隔. 例如,现有表temp_cwh_test: -- 创建临时表 create table temp_cwh_tes ...
随机推荐
- caffe-ssd
1.安装依赖 1 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-ser ...
- implode
$names = implode('|', array_column($categoryBackNameArr, 'name'));
- 3月26 document的练习
1.Window.document对象 一.找到元素: docunment.getElementById("id"):根据id找,最多找一个: var a =docunme ...
- vue项目中引入第三方框架
element-ui npm install element-ui -- save; main.js中 import Element from 'element-ui'; import 'elemen ...
- ubuntu开启慢日志
ubuntu 开启mysql日志记录 1.找到mysql的配置文件sudo vim /etc/mysql/my.cnf将下面两行的#去掉#general_log_file = /var/log/mys ...
- xmanager运行报错:bash: /usr/bin/xterm: No such file or directory
1.原因 xterm没有安装,解决办法是下载然后安装即可. 如果机器可以用yum,则直接使用yum安装xterm即可: yum install -y xterm 如果没有网络,则在某台操作系统大版本相 ...
- Windows与Linux的回车换行转换
最初"\r"(return)表示“回车”即回到行首,“\n”(next)表示“换行”即定位到下一行:UNIX和Linux使用“\n”换行,而Windows用“\r\n”(不是\n\ ...
- Linux查看某个命令属于哪个包
有时修我们需要某个命令但其没有安装,提供该命令的包名也与命令名相差很大直接查找命令名找不到包,如rexec. 此时我们就非常需要这样一个工具:可以根据最终的命令查找提供该命令的软件包. 类型 命令 说 ...
- Zookeeper的实际应用
Zookeeper是hadoop的一个子项目,虽然源自hadoop,但是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多.今天我想谈谈zookeeper,本文不谈如何使用zo ...
- jquery自定义类的封装
如何用jquery自定义一个类?(demo参考) /*简单使用*/ (function($){ //el操纵对象,option属性值 $.love = function(el,option){ var ...