ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Oracle常用语法小结

2021-03-04 15:02:03  阅读:183  来源: 互联网

标签:name -- value 语法 Oracle table 小结 col select


文章目录


1、数据的两两组合

1.1 不分先后顺序的实现value_col列的值的两两组合

--不分先后顺序的实现value_col列的值的两两组合
select REPLACE(sys_connect_by_path (value_col, '#'),'#') combo
  from users
 where level = 2 --两两组合,若要三个组合,把2改为3
 connect by prior value_col < value_col and level <= 2; --
 /*输出
ab
ac
ad
bc
bd
cd
*/

1.2 有先后顺序的实现value_col列的值的两两组合

--有先后顺序的实现value_col列的值的两两组合
select REPLACE(sys_connect_by_path (value_col, '#'),'#') combo
from users
where level = 2
connect by nocycle prior value_col!= value_col and level <= 2;
 
/*输出
ab
ac
ad
ba
bc
bd
ca
cb
cd
da
db
dc
 */

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

2、字段拼接过程中以0开头的小数,开头的0消失

  为何小数点前0会省略,是因为oracle数据库中存在一个隐形类型转换,在拼接的过程中小数自动转成字符类型,相当于调用了to_char函数,所以丢失小数点前面的0.

select to_char(0.123,'fm990.0000')||'小数' from dual
--显示结果为:0.123小数

/*
--其中9代表如果存在数字则显示数字,不存在则显示空格;
--0代表如果存在数字则显示数字,不存在则显示0,即占位符;
--fm代表删除如果是因9带来的空格,则删除。
*/

3 创建一张与其他表相同表结构的表

  oracle创建一张与其他表相同表结构的表,创建的表与现存表结构相同,但是是不会将comment(即注释)带过来。

--只是建立t1表,与emp表结构相同,并不添加数据
create table t1 as select * from scott.emp where 1=0;

--只是建立t1表,与emp表结构相同,添加数据
create table t1 as select * from scott.emp;

4 模糊匹配


SELECT e.*,SYS.UTL_MATCH.EDIT_DISTANCE_SIMILARITY(e.ename,'SC') xsd 
  FROM emp e
ORDER BY xsd DESC;


SELECT e.*,SYS.UTL_MATCH.EDIT_DISTANCE_SIMILARITY(e.ename,e.name) xsd 
  FROM emp e
ORDER BY xsd DESC;

--edit_distance 这个函数是判断两个字串中有差异的字串个数.
--edit_distance_similarity 这个函数是比较两个字串中的相似度.


5 增删改查

--1、添加字段
alter table table_name add column1 type add column2 type add column3 type ... ;
commit;

--2、删除字段
alter table table_name drop column column_name;
commit;

--3、修改字段类型
alter table table_name modify column_name varchar2(100);
commit;

--4、修改字段名:
alter table table_name rename column old_name to new_name;
commit;


6 行列转换

6.1 列转行

select name,value --name是字段名,value是数值
  from dual
unpivot(value for name in (col1,col2,col3,col4,col5));

6.2 多行转一行

/*
表test(id,name)  数据如下:
id   name
1    张三
2   李四
3   王五
*/

--多行转一行(把name字段的所有数据拼起来合并到一行显示)
select listagg( name, '-' ) within group ( order by id ) as name 
  from TABLE_NAME;

--输出结果:张三-李四-王五

7 字符串拆分

--substr函数
select substr(col1,1,14) from dual

--
 select substr(t,1,instr(t,',',1)-1) 
   from (select substr(s,instr(s,',',1,rownum)+1)||',' as t,
                rownum as d ,instr(s,',',1,rownum)+1 
           from (select ',tt,aa,bb'  as s from dual)
     connect by instr(s,',','1',rownum)>1)

8 统计字符串出现次数

select regexp_count('abdfdahda','a') from dual --统计a出现的次数

标签:name,--,value,语法,Oracle,table,小结,col,select
来源: https://blog.csdn.net/weixin_50304531/article/details/112860783

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有