
SQL
文章平均质量分 76
oracle,mysql,hive 等各个不同DBMS的SQL研究。
desmond_retain
这个作者很懒,什么都没留下…
展开
-
sql from和 where的执行顺序
小本本记一下,工作中看同事的代码遇到这个问题。同事开发的存储过程,把条件放在from后面 和where后面。想当然的情况下好像没啥区别。但是sql 的执行顺序是第一步执行 from 后面的语句,第二步执行where 后面的语句。在这里用oralce 举个例子,不同DBMS的sql基本大同小异。1、数据准备:在另一篇笔记中:oracle pivot unpivot 行列互换insert into test001 select t.id_test, t.col_int, t.col_int,原创 2021-11-07 11:15:35 · 1926 阅读 · 0 评论 -
oracle pivot 使用遇到的问题(待分析查看报错原因)
用oracle plsql编写存储过程的时候,遇到pivot使用的问题。例子代码在这里:oracle pivot unpivot 行列互换select * from test002;select * from test002 tpivot(max(t.col_int) for id_test in('apple', 'banana', 'pear', 'orange', 'peach'));-- 在plsql developer 中执行以下代码报错:ora-01747select原创 2021-10-23 09:46:12 · 1111 阅读 · 0 评论 -
oracle chr(0)隐藏字符串后面的内容
在工作中遇到的SQL函数:CHAR(0)。在看sqlserver 的存储过程中,遇到了函数CHAR(0)这个函数。本想着应该是ASCII转换。不过0代表什么字符还真没有印象。后来上网一搜,这个字符有点意思,隐藏字符。。。参考以下博客:SQLServer字段替换隐藏字符CHAR(0),踩坑后Get新技能SQL SERVER char(0) ASCII() UNICODE() \u0000 空值 不显示oracle chr(0) 隐藏字符串sqlserver 中的语法是 CHAR(0),oracl原创 2021-10-22 09:10:25 · 2076 阅读 · 0 评论 -
oracle pivot unpivot 行列互换
1、工作问题最近工作上遇到一个数学问题:校验五个(或以上)数字不能重复出现两次或以上。数据表如下形式:create table test001 ( id_test varchar2(10), col_1 int, col_2 int, col_3 int, col_4 int, col_5 int);insert into test001(id_test, col_1, col_2, col_3, col_4, col_5) values('a',1,2,3,4,5);原创 2021-10-04 15:19:03 · 515 阅读 · 0 评论 -
Oracle sysdate加减
Oracle 官方介绍:SQL Language Reference:SYSDATEsysdate 返回数据库服务器所在操作系统的当前日期和时间。返回的数据类型是DATE类型,返回的格式取决于NLS_DATE_FORMAT这个初始化参数。这个函数不需要参数。在发行的SQL声明中,这个函数返回本地数据库所在操作系统的日期和时间。这个函数不能再检查约束中使用。Note:FIXED_DATE 这个初始化参数可以设置一个常量日期时间值,用于取代sysdate返回的当前时间值。这个参数主要用于测试。参数原创 2021-08-11 09:56:13 · 2180 阅读 · 0 评论 -
hive 的from insert,lateral view,explode,map数据类型 语法
hive的多插语句可以从一张表往多张表查数据,只扫描一次数据源表,减少扫描次数。测试数据:drop table if exists default.test001;create table if not exists default.test001( s_name string, s_course map<string, int>) comment 'name_course'row format delimitedfields terminated by '\t'c原创 2021-07-20 16:58:53 · 1567 阅读 · 0 评论 -
oracle(from dual, connect by ),hive(datediff, space, split, lateral view, posexplode)的无中生有sql样例
需求:生成 2000-01-01 至 当前年份 往后推10年 的日期序列集。在oralce 里的语法:select date '2000-01-01' + rownum - 1 as bk_datefrom dualconnect by rownum <= add_months(trunc(sysdate,'YY'),120) - date '2000-01-01';在hive 里的语法:with t1 as (select split( space原创 2021-07-19 11:12:26 · 565 阅读 · 0 评论