然后觉得有点奇怪,数据库里面都没有创建这个dual表,这个表是从何而来呢?然后Google了一波,理解了一下。
日期操作 select sysdate,add_months(sysdate,12) from dual; -- + 1 year select sysdate,add_months(sysdate,1) from dual; -- + 1 month select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; -- + 1 week select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH2
① 系统提供的一个DUMMY表,临时显示结果的表,里边的内容没有特定的意义,就是为了存在而存在。
1. 从最简单的开始 sum(...) over( ),对所有行求和 sum(...) over( order by ... ),和 = 第一行 到 与当前行同序号行的最后一行的所有值求和,文字不太好理解,请看下图的算法解析。 with aa as( SELECT 1 a,1 b, 3 c FROM dual unionSELECT 2 a,2 b, 3 c FROM dual unionSELECT 3 a,3 b, 3 c FROM dual unionSELECT 4 a,4 b, 3 c
以下SQL,只会查询2021-01-01至2021-1-2 00:00:00的数据
在SQL中支持行匹配模式的match_recognize写法, 是oracle 从12c开始推出的, 功能很强大,语法看起来有点复杂, 跟普通的SQL区别挺大.
本文用的是Oracle 10g数据库,利用PL/SQL Developer的集成开发环境。
我们创建一个表,并生成两个表分区CUS_PART1,CUS_PART2.关于分区的分类可以参考https://www.cnblogs.com/wnlja/p/3979684.html
DBA除了日常的运维工作之外,可能还需要对开发人员提出的SQL需求进行建议和实现。最近有遇到几个比较有意思的SQL,在解决的过程中发现,这些SQL的处理思路都是通过找出数据的共同属性来解决。
MySQL里面的dual算是一个特殊的存在,如果接触过Oracle的同学会很熟悉。因为语法习惯和完整性的原因会更倾向于使用这种方式。
等值比较: = 语法:A = B 操作类型: 所有基本类型 描述: 如果表达式A与表达式B相等,则为TRUE;否则为FALSE 举例:
随着近些年来数据库技术发展演进,及国内数据库日益活跃。越来越多的企业将数据库从传统商业数据库迁移到开源或国产数据库平台。本文对比了最为常见的一种情况,从Oracle迁移到MySQL需要关注的一些差异点。这方便应用研发在迁移之初做好必要的评估备。此外,因MySQL生态发展很广泛,很多数据库产品会将MySQL作为兼容的首选。因此,很多其他类型的数据库迁移,也可以参考此文内容。
语法:A=B 操作类型:所有基本类型 描述:如果表达式A与表达式B相等,则为TRUE;否则为FALSE 举例: hive>select 1 from lxw_dual where 1=1; 1
--------------------------------------------------------------------------------------------------------where
许多人都是由于本身软弱而做出问心有愧的事来的,并非都是蓄意背信弃义。——拉罗什富科 前两天看到项目中有这样一句SQL SELECT (SELECT username FROM `user_2018` WHERE id = 1) username,(SELECT `password` FROM `user_2019` WHERE id = 1) `password` FROM DUAL; 最后这里有一个FROM DUAL 我没有在数据库中找到DUAL表,它是一个关键字 但我们就算去掉FROM DUAL,
这是一个Oracle的列转行函数:LISTAGG() 注:oracle 11.2才能用
总结了几点常用的关于日期时间相关的一些函数的用法,有时候可以很方便的帮你解决些棘手问题
聚合函数 统计和分析 数据 使用场景:会和分组结合使用 -- 一旦启用分组,只能获取组的信息,组中成员不能出现在select后 count() 查询某个字段的行数 max()查询某个字段的最大值 min()查询某个字段的最小值 sum()查询某个字段的和 avg()查询某个字段的平均值 常用的字符函数 -- concat(str1,str2...strN) 连接字符串 SELECT CONCAT('h','el','lo') FROM DUAL; -- insert(str,begin,lengt
简要比较: replace 字符串级别的代替 如:SELECT REPLACE('accd','cd','ef') from dual; --> aefd translate 字符级别的代替 如:select translate('acdd','cd','ef') from dual; -->aeff 分别详解 replace:语法:REPLACE(char,search_string[,replacement_string]) 解释:replace中,每个search_string都被repla
以前学过一些数据库相关的知识,回想起来刚入门还是看了传智播客的视频,杨忠科老师的sql语句教程。现在已经好多年了,中间自己也不断的在用,但是一直没有提高,只是会简单增删改查,今天学的 cast..then..等等都没怎么用过,所以记录一下没有学到过的内容,以后备用。
replace 字符串级别的代替 如:SELECT REPLACE('accd','cd','ef') from dual; --> aefd
Oracle数据库是数据的物理存储。这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。其实 Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是 Oracle就只有一个大数据库。
hive字符串函数 1. 字符串长度函数:length 语法: length(string A) 返回值: int 说明:返回字符串A的长度 举例:hive> select length('abcedfg') from lxw_dual; 7 2. 字符串反转函数:reverse 语法: reverse(string A) 返回值: string 说明:返回字符串A的反转结果 举例: hive> select reverse(abcedfg') from lxw_dual; gfdecba 3. 字符串连接
在Oralce中我发现有add_months函数,加天数N可以用如下方法实现,select sysdate+N from dual
SELECT * FROM Websites WHERE name LIKE ‘_oogle’;
Oracle和MySQL数据库语法大致相同,结构不太相同,对于“数据库”这个概念而言,Oracle采用了”表空间“的定义。数据文件就是由多个表空间组成的,这些数据文件和相关文件形成一个完整的数据库。当数据库创建时,Oracle 会默认创建五个表空间:SYSTEM、SYSAUX、USERS、UNDOTBS、TEMP。
函数一般是在数据上执行的,它给数据的转换和处理提供了方便。只是将取出的数据进行处理,不会改变数据库中的值。函数根据处理的数据分为单行函数和聚合函数(组函数),组函数又被称作聚合函数,用于对多行数据进行操作,并返回一个单一的结果,组函数仅可用于选择列表或查询的having子句;单行函数对单个数值进行操作,并返回一个值。
select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual;
本文摘自Oracle APEX社区,原文地址:https://www.sqlu.cn/116.html
--create table test as select * from T1 where 1=2;
常常写 sql 的同学应该会接触到一些 oracle 的日期时间函数, 比如: 財务软件或者人力资源软件须要依照每年, 每季度, 每月, 甚至每一个星期来进行统计.
Oracle 最常用功能函数经典汇总 SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A A ZERO SPACE --------- --------- --------- --------- 65 97
1.绝对值 SQL:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.001) value O:select ceil(-1.001) value from dual 3.取整(小) S:select floor(-1.001) value O:select floor(-1.001) value from dual 4.取整(截取) S:sel
1、wmsys.wm_concat函数 将列转为行。例子: --表里的数据如下 SQL> select * from idtable; ID NAME ---------- ------------------------------ 10 ab 10 bc 10 cd 20 hi 20 ij 20 mn --函数的执行效果 SQL>select id,wmsys.wm_concat(name)
hive字符串函数 1. 字符串长度函数:length 语法: length(string A) 返回值: int 说明:返回字符串A的长度 举例:hive> select length('abcedfg') from lxw_dual; 7 2. 字符串反转函数:reverse 语法: reverse(string A) 返回值: string 说明:返回字符串A的反转结果 举例: hive> select reverse(abcedfg') from lxw_dual; gfdecba 3. 字符串连接函数:concat 语法: concat(string A, string B…) 返回值: string 说明:返回输入字符串连接后的结果,支持任意个输入字符串 举例: hive> select concat('abc','def','gh') from lxw_dual; abcdefgh 4. 带分隔符字符串连接函数:concat_ws 语法: concat_ws(string SEP, string A, string B…) 返回值: string 说明:返回输入字符串连接后的结果,SEP表示各个字符串间的分隔符 举例: hive> select concat_ws(',','abc','def','gh') from lxw_dual; abc,def,gh 5. 字符串截取函数:substr,substring 语法: substr(string A, int start),substring(string A, int start) 返回值: string 说明:返回字符串A从start位置到结尾的字符串 举例: hive> select substr('abcde',3) from lxw_dual; cde hive> select substring('abcde',3) from lxw_dual; cde hive> selectsubstr('abcde',-1) from lxw_dual; (和ORACLE相同) e 6. 字符串截取函数:substr,substring 语法: substr(string A, int start, int len),substring(string A, intstart, int len) 返回值: string 说明:返回字符串A从start位置开始,长度为len的字符串 举例: hive> select substr('abcde',3,2) from lxw_dual; cd hive> select substring('abcde',3,2) from lxw_dual; cd hive>select substring('abcde',-2,2) from lxw_dual; de 7. 字符串转大写函数:upper,ucase 语法: upper(string A) ucase(string A) 返回值: string 说明:返回字符串A的大写格式 举例: hive> select upper('abSEd') from lxw_dual; ABSED hive> select ucase('abSEd') from lxw_dual; ABSED 8. 字符串转小写函数:lower,lcase 语法: lower(string A) lcase(string A) 返回值: string 说明:返回字符串A的小写格式 举例: hive> select lower('abSEd') from lxw_dual; absed hive> select lcase('abSEd') from lxw_dual; absed 9. 去空格函数:trim 语法: trim(string A) 返回值: string 说明:去除字符串两边的空格 举例: hive> select trim(' abc ') from lxw_dual; abc 10. 左边去空格函数:ltrim 语法: ltrim(string A) 返回值: string 说明:去除字符串左边的空格 举例: hive> select ltrim(' abc ') from lxw_dual; abc 11. 右边去空格函数:rtrim 语法: rtrim(string A) 返回值: string 说明:去除字符串右边的空格 举例: hive> select rtrim(' abc ') from lxw_dual; abc 12. 正则表达式替换函数:regexp_replace 语法: regexp_replace(string A, string B, string C) 返回值: string 说明:将字符串A中的符合java正则表达式B的部分替换为C。注意,在
格式化日期指的是将日期转为字符串,或将字符串转为日期,下面几个函数可以用来格式化日期
2015/04/29 (即返回以’/’分隔符连接的字符串,也可以替换为’^’连接则结果为2015^04^29,也可以替换为’-‘则结果为2015-04-29)
前面我们学了一些简单的用法,今天要学习oracl函数的使用,函数是oracle非常重要的功能,如果将函数学会了,那么基本上在项目的一些增删改查功能,就可以很轻松的上手了,所以这篇文章一定要认真的看
注意:这里只有 MONTHS_BETWEEN 有效。YEARS_BETWEEN 和 DAYS_BETWEEN 这两个都是无效函数
在实际的工作中会经常会用到to_char()、to_date()函数来对时间、日期进行处理。
在订单信息查询时想获取当天产生的订单信息,查询了解到可以使用Oracle中的TRUNC函数,总结用法如下。
注:oracle的concat函数只支持两个参数的方法,即只能拼接两个参数,如要拼接多个参数则嵌套使用concat可实现,如:
DUAL单纯为了方便声明了SELECT,需要使用FROM或者其他子句的时候。MySQL可能忽略这些子句。如果没有指定表,MySQL不需要FROM DUAL。
关于dual表的破坏性测试,既然是破坏性测试,就需要确定这个测试仅限于测试或者个人学习所用,可能有些sql看似极为简单,但是一旦运行就会导致整个业务系统崩溃。 比如说我们拿dual表开刀,这个表是一个dummy表,里面的内容没有特定的意义,就是为了存在而存在。但是一旦这个表出现问题,所有相关的基础操作都会受到影响,后果不敢想象。 来简单模拟一下,在个人的机器上开始做下面的尝试,drop 表dual SQL> show user USER is "SYS" SQL> SQL> show parameter
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158207.html原文链接:https://javaforall.cn
前言:最近在写一些比较复杂的SQL,是一些统计分析类的,动不动就三四百行,也是首次写那么长的SQL,有用到一些奇形怪状的SQL函数,在这里结合网上的例子做一些笔记,以后用到不记得用法可以翻出来看!
在Oracle数据库中,Oracle to_date()函数是我们经常使用的函数,下面就为您详细介绍Oracle to_date()函数的用法 to_date()与24小时制表示法及mm分钟的显示:
领取专属 10元无门槛券
手把手带您无忧上云