1. --第一部分:SQL基础
  2. --ch1 简单查询
  3. --ch2 查询基本概念
  4. --ch3 数据过滤
  5.  
  6. --第二部分:多表操作
  7. --ch4 集合理论
  8. --ch5 内连接
  9. --ch6 外连接
  10. --ch7 子查询
  11.  
  12. --第三部分:数据分组
  13. --ch8 简单统计
  14. --ch9 数据分组
  15. --ch10 分组数据过滤
  16.  
  17. --第四部分:SQL函数
  18. --ch11 内置函数
  19. --ch12 case表达式
  20.  
  21. --第五部分:DML语句
  22. --ch13 插入数据
  23. --ch14 修改数据
  24. --ch15 删除数据
  25.  
  26. --------------------------------------------------------------------------
  27. --第四部分:SQL函数
  28. ch11 内置函数】
  29. --11.1使用单行函数
  30. /*
  31. 字符函数
  32. 数字函数
  33. 转换函数
  34. 日期函数
  35. */
  36. --字符函数
  37. --ascii(x)返回字符xascii
  38. SELECT ascii('a'), ascii('A'), ascii('z'), ascii('Z'), ascii(0), ascii(9)
  39. FROM dual;
  40. --chr(x)返回ascii码为x的字符
  41. SELECT CHR(97),CHR(65),CHR(122),CHR(90) FROM dual;
  42. --concat(x,y)将y附加在x上,并返回附加后的字符串
  43. SELECT first_name,last_name,concat(first_name, last_name) allname FROM customers;
  44. --initcap(x)将x中的每个单词的首字母转换为大写
  45. SELECT product_id,description, initcap(description) ad
  46. FROM products
  47. WHERE product_id < 4;
  48. --instr(x,find_str,star,occur)
  49. --在x中查找字符串find_str,然后返回find_str所在的位置。
  50. --start指定哪个位置开始查找,occur指定find_str出现的次数
  51. SELECT NAME, instr(NAME, 'Science') FROM products WHERE product_id = 1;
  52. SELECT NAME, instr(NAME, 'e', 1, 2) FROM products WHERE product_id = 1;
  53. --可用于日期
  54. SELECT customer_id ,dob,INSTR(dob,'01') FROM customers WHERE customer_id = 1;
  55. --可以指定occur为负数,表示从字符串尾部开始向左查找
  56. SELECT NAME, instr(NAME, 'n', -2, 2) FROM products WHERE product_id = 1;
  57. --length(x)返回x中字符的个数
  58. SELECT NAME, length(NAME) FROM products;
  59. --lower(x)将x中的字母转换为小写
  60. --upper(x)将x中的字母转换为大写
  61. SELECT first_name,upper(first_name), last_name,lower(last_name) FROM customers;
  62. --lpad(x,width,pad_str)在x的左边补齐pad_str字符使得其长度为width
  63. --rpad(x,width,pad_str)在x的右边补齐pad_str字符使得其长度为width
  64. SELECT name,rpad(NAME, 30, '.'),price, lpad(price, 8, '*+')
  65. FROM products
  66. WHERE product_id < 4;
  67. --ltrim(x,trim_str)从x中的左边截去一些字符,直到x中有字符不出现在trim_str中为止
  68. --rtrim(x,trim_str)从x中的右边截去一些字符,直到x中有字符不出现在trim_str中为止
  69. --trim(leading|trailing|both y from x)从x中截去单个字符y
  70. SELECT ltrim(' Hello Gail Seymour!'),
  71. rtrim('Hi doreen Oakley!abcabc', 'akb!c'),
  72. TRIM(TRAILING '0' FROM '000Hey Steve Button!00000')
  73. FROM dual;
  74. --nvl(x,value)若x为空,则返回value,否则返回x
  75. --nvl2(x,v1,v2)若x为空,则返回v2,否则返回v1
  76. SELECT customer_id,
  77. phone,
  78. nvl(phone, 'Unkown phone number'),
  79. dob,
  80. nvl(dob, SYSDATE),
  81. phone,
  82. nvl2(phone, 'Known', 'Unknown')
  83. FROM customers;
  84.  
  85. --replace(x,search_str,replace_str)在x中查找search_str,并将其替换为replace_str
  86. SELECT name,REPLACE(NAME, 'Science', 'Physics')
  87. FROM products
  88. WHERE product_id = 1;
  89.  
  90. --substr(x,start,length)返回x中的一个子字符串,子字符串从start开始,子字符串长度为length
  91. SELECT name, substr(NAME, 2, 7), substr(NAME, -5, 2)
  92. FROM products
  93. WHERE product_id < 4;
  94.  
  95. --11.2函数组合
  96. SELECT NAME, upper(substr(NAME, 2, 8)) FROM products WHERE product_id < 4;
  97.  
  98. --11.3数字函数
  99. --abs(x)返回x的绝对值
  100. SELECT ABS(-1.222) FROM dual;
  101. SELECT product_id, price, price - 30, abs(price - 30)
  102. FROM products
  103. WHERE product_id < 4;
  104. --ceil(x)返回大于或等于x的最小整数
  105. SELECT ceil(5.8), ceil(-5.2) FROM dual;
  106. --floor(x)返回小于或等于x的最大整数
  107. SELECT floor(5.8), floor(-5.2) FROM dual;
  108. --mod(x,y)返回x除以y的余数
  109. SELECT MOD(8, 3), MOD(8, 4) FROM dual;
  110. --power(x,y)返回xy次幂
  111. SELECT POWER(2,3) FROM dual;
  112. --round(x,y)返回对x进行取整的结果:若y不指定,对小数点后第一位四舍五入,若y>0,对第y+1位小数四舍五入;若y<0,对小数点左边的y位四舍五入
  113. SELECT round(5.75), round(5.75, 1), round(15.75, -1) FROM dual;
  114. --sign(x)返回x的符号。若x<0,返回-1;若x=0,返回0;若x>0,返回1
  115. SELECT sign(-5), sign(0), sign(5) FROM dual;
  116. --trunc(x,y)用于计算对x进行截断的结果:若y不指定,对小数点后第一位截断,若y>0,对第y+1位小数截断;若y<0,对小数点左边的y位截断
  117. SELECT trunc(5.75), trunc(5.76, 1), trunc(15.75, -1) FROM dual;
  118.  
  119. --11.4转换函数
  120. --to_char(x,format)用于将x转换为一个字符串。可以用format指定格式
  121. SELECT to_char(123.456) FROM dual;
  122. SELECT to_char(12345.67, '99,999.99') FROM dual;
  123. --to_number(x,format)用于将x转换为一个数字。可以用format指定格式
  124. SELECT to_number('9455.335') FROM dual;
  125. SELECT to_number('-$12,345.67', '$99,999.99') FROM dual;
  126. --使用to_char()和to_date()转换时间值
  127. --to_char(x,format)将数字或时间值x转换为字符串。
  128. --to_date(x,format)将字符串x转换为date类型
  129. --使用to_char()将时间值转换为字符串
  130. SELECT sysdate,to_char(SYSDATE,'yyyy-mm-dd') FROM dual;
  131.  
  132. SELECT customer_id, to_char(dob, 'MONTH DD,YYYY') FROM customers;
  133.  
  134. SELECT to_char(SYSDATE,'MONTH DD,YYYY,HH24:MI:SS') FROM dual;
  135. /*常用format参数
  136. YYYY四位年份
  137. MM二位月份
  138. MONTH月份的全拼,全部大写
  139. MON月份的前3个字母
  140. WW本年中的第几周
  141. W本月中的第几周
  142. DD本月中的第几天
  143. D本周中的第几天
  144. DAY周几的全名,全部大写
  145. HH24 24小时格式小时数
  146. HH 12小时格式小时数
  147. MI分钟
  148. SS秒数
  149. FF[1..9]带有小数的秒数
  150. 分隔符:-/,.;: "text"
  151. */
  152. SELECT to_char(SYSDATE,'D') FROM dual;
  153.  
  154. --使用to_date()将字符串转换为时间值
  155. SELECT to_date('5月 2,2006', 'month dd,yyyy') FROM dual;
  156. SELECT to_date('20120808','yyyy-mm-dd') FROM dual;
  157.  
  158. --11.5使用时间值函数
  159. --add_months(x,y)返回x加上y个月后的结果,若y为负值,则从x中减去y个月
  160. SELECT add_months(SYSDATE, 3), add_months(trunc(SYSDATE), -3) FROM dual;
  161. --last_day(x)返回包含x月的最后一天
  162. SELECT last_day(DATE'2012-12-1') FROM dual;
  163. --months_between(x,y)返回xy之间有几个月,如果xy晚,就返回正数,否则为负数
  164. SELECT months_between(SYSDATE + 1000, SYSDATE) FROM dual;
  165. --next_day(x,day)返回从x开始,下一个day的时间值
  166. SELECT next_day(DATE'2012-5-23','星期一') FROM dual;
  167. SELECT next_day(DATE'2012-5-23',2) FROM dual;
  168. --round(x,unit)对x进行取整。
  169. SELECT round(SYSDATE, 'YYYY') FROM dual;
  170. SELECT round(SYSDATE, 'MM') FROM dual;
  171. --sysdate()返回数据库所在操作系统中当前设置的时间值
  172. SELECT SYSDATE FROM dual;
  173. --trunc(x,unit)对x进行截断。
  174. /*
  175. YYYY四位年份
  176. MM二位月份
  177. WW本年中的第几周
  178. W本月中的第几周
  179. DD本月中的第几天
  180. D本周中的第几天
  181. HH24 24小时格式小时数
  182. HH 12小时格式小时数
  183. MI分钟
  184. */
  185. SELECT trunc(SYSDATE, 'Y') FROM dual;
  186. SELECT trunc(SYSDATE, 'MM') FROM dual;
  187. SELECT SYSDATE+7,trunc(SYSDATE+7, 'W') FROM dual;
  188. SELECT trunc(SYSDATE, 'DD') FROM dual;
  189. SELECT trunc(SYSDATE+7, 'D') FROM dual;
  190. SELECT trunc(SYSDATE, 'HH') FROM dual;
  191. SELECT trunc(SYSDATE, 'MI') FROM dual;
  192. --11.6使用translate()函数
  193. --translate(x,from_str,to_str)函数在x中查找from_str中的字符,并将其转换成to_str中对应的字符
  194. SELECT product_id,
  195. NAME,
  196. translate(NAME,
  197. 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
  198. 'EFGHIJKLMNOPQRSTUVWXYZABCDefghijklmnopqrstuvwxyzabcd')
  199. FROM products;
  200.  
  201. SELECT translate('I am Chinese, I love China', 'China', '中国') "Translate example"
  202. FROM dual;
  203.  
  204. SELECT translate('我是中国人,我爱中国', '中国', 'China') "Translate example"
  205. FROM dual;
  206.  
  207. --11.7使用decode()函数
  208. --decode(value,search_value,result,default_value)对valuesearch_value进行比较。如果这两个值相等
  209. --则返回result,否则返回default_value
  210. --相当于在SQL中执行if语句
  211. SELECT DECODE(1,1,2,3) FROM dual;
  212. SELECT DECODE(1,2,1,3) FROM dual;
  213. SELECT prd_id,
  214. available,
  215. decode(available,
  216. 'Y',
  217. 'Product is available',
  218. 'Product is not available')
  219. FROM more_products;
  220. --可以向decode传递多个参数
  221. SELECT product_id,
  222. product_type_id,
  223. decode(product_type_id,
  224. 1,
  225. 'Book',
  226. 2,
  227. 'Video',
  228. 3,
  229. 'DVD',
  230. 4,
  231. 'CD',
  232. 'Magazine')
  233. FROM products;
  234.  
  235. ch12 case表达式】
  236. --与decode类似,相当于在SQL中执行if语句
  237. CASE 表达式有两种格式:
  238.  
  239. CASE 简单表达式,它通过将表达式与一组简单的表达式进行比较来确定结果。
  240. CASE 搜索表达式,它通过计算一组逻辑表达式来确定结果。
  241.  
  242. 这两种格式都支持可选的 ELSE 参数。
  243.  
  244. CASE 可用于允许使用有效表达式的任意语句或子句。
  245. 例如,可以在 SELECTUPDATEDELETE SET 等语句以及 select_listINWHEREORDER BY HAVING 等子句中使用 CASE
  246.  
  247. --case简单表达式:
  248. CASE input_expression
  249. WHEN when_expression1 THEN result_expression1
  250. WHEN when_expression2 THEN result_expression2
  251. ...
  252. [ ELSE else_result_expression ]
  253. END
  254.  
  255. SELECT product_id,
  256. product_type_id,
  257. CASE product_type_id
  258. WHEN 1 THEN
  259. 'Book'
  260. WHEN 2 THEN
  261. 'Video'
  262. WHEN 3 THEN
  263. 'DVD'
  264. WHEN 4 THEN
  265. 'CD'
  266. ELSE
  267. 'Magazine'
  268. END casen
  269. FROM products;
  270.  
  271. --使用case搜索表达式
  272. CASE
  273. WHEN Logical_expression1 THEN result_expression1
  274. WHEN Logical_expression2 THEN result_expression2
  275. ...
  276. [ ELSE else_result_expression ]
  277. END
  278.  
  279. SELECT product_id,
  280. product_type_id,
  281. CASE
  282. WHEN product_type_id = 1 THEN
  283. 'Book'
  284. WHEN product_type_id = 2 THEN
  285. 'Video'
  286. WHEN product_type_id = 3 THEN
  287. 'DVD'
  288. WHEN product_type_id = 4 THEN
  289. 'CD'
  290. ELSE
  291. 'Magazine'
  292. END casen
  293. FROM products;

Oracle学习(四)_SQL函数的更多相关文章

  1. Oracle学习(四):组函数

    1.知识点:能够对比以下的录屏进行阅读 SQL> --组函数类型:avg,count,max.min,sum SQL> --工资总额 SQL> select sum(sal) fro ...

  2. Oracle学习笔记—常用函数

    这里记录一些oracle常用的函数. TO_NUMBER()函数 将字符串类型转换成一个 number 类型的值. SELECT TO_NUMBER('100.00') FROM DUAL; TO_C ...

  3. Oracle学习笔记——常用函数总结

    在平时写PL/SQL的时候,经常要用到很多系统自带的函数,而这些函数用起来非常好用,但是每次用完以后,就又忘到脑后了,为了加深自己的映象,以及对这些函数做一个全面的总结,就有了今天这篇文章. 首先这就 ...

  4. Oracle系列四 单行函数查询语句

    单行函数 操作数据对象 接受参数返回一个结果 只对一行进行变换 每行返回一个结果 可以转换数据类型 可以嵌套 参数可以是一列或一个值 包含:字符,数值,日期,转换,通用 字符函数 1.大小写控制函数: ...

  5. oracle学习 四(持续更新中)无法为表空间 MAXDATA 中的段创建 INITIAL 区

    解决建立表的时候出现的 ORA-01658: 无法为表空间 MAXDATA 中的段创建 INITIAL 区 出现这个问题是因为表空间的大小不足,可以给他扩容这样的话也会多出来一个数据文件.具体写法如下 ...

  6. Oracle学习笔记之四sp1,Oracle 11g的常用函数

    从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i)    分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...

  7. day 83 Vue学习四之过滤器、钩子函数、路由、全家桶等

    Vue学习四之过滤器.钩子函数.路由.全家桶等   本节目录 一 vue过滤器 二 生命周期的钩子函数 三 vue的全家桶 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 Vue的过滤 ...

  8. 《ORACLE数据库管理与开发》第三章学习之常用函数记录

    <ORACLE数据库管理与开发>第三章学习之常用函数记录 注:文章中的*代表所要操作的列名 1.lower(*)/upper(*),将此列下的值转为小写/大写 2.initcap(*):把 ...

  9. Oracle学习笔记:trunc函数

    在Oracle中可以使用trunc函数进行日期截取和数字截取,具体使用方法如下: 1.trunc(for dates) 日期截取 语法:trunc(date,[fmt]) select trunc(s ...

  10. Oracle学习笔记:wm_concat函数合并字段

    在Oracle中使用wm_concat(column)可以实现字段的分组合并,逗号分隔. 例如,现有表temp_cwh_test: -- 创建临时表 create table temp_cwh_tes ...

随机推荐

  1. caffe-ssd

    1.安装依赖 1 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-ser ...

  2. implode

    $names = implode('|', array_column($categoryBackNameArr, 'name'));

  3. 3月26 document的练习

    1.Window.document对象 一.找到元素: docunment.getElementById("id"):根据id找,最多找一个:     var a =docunme ...

  4. vue项目中引入第三方框架

    element-ui npm install element-ui -- save; main.js中 import Element from 'element-ui'; import 'elemen ...

  5. ubuntu开启慢日志

    ubuntu 开启mysql日志记录 1.找到mysql的配置文件sudo vim /etc/mysql/my.cnf将下面两行的#去掉#general_log_file = /var/log/mys ...

  6. xmanager运行报错:bash: /usr/bin/xterm: No such file or directory

    1.原因 xterm没有安装,解决办法是下载然后安装即可. 如果机器可以用yum,则直接使用yum安装xterm即可: yum install -y xterm 如果没有网络,则在某台操作系统大版本相 ...

  7. Windows与Linux的回车换行转换

    最初"\r"(return)表示“回车”即回到行首,“\n”(next)表示“换行”即定位到下一行:UNIX和Linux使用“\n”换行,而Windows用“\r\n”(不是\n\ ...

  8. Linux查看某个命令属于哪个包

    有时修我们需要某个命令但其没有安装,提供该命令的包名也与命令名相差很大直接查找命令名找不到包,如rexec. 此时我们就非常需要这样一个工具:可以根据最终的命令查找提供该命令的软件包. 类型 命令 说 ...

  9. Zookeeper的实际应用

    Zookeeper是hadoop的一个子项目,虽然源自hadoop,但是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多.今天我想谈谈zookeeper,本文不谈如何使用zo ...

  10. jquery自定义类的封装

    如何用jquery自定义一个类?(demo参考) /*简单使用*/ (function($){ //el操纵对象,option属性值 $.love = function(el,option){ var ...