各种树操作, 用来查询表中带有子父节点的信息

Oracle 树操作(select…start with…connect by…prior)

     select m.org_id
from sm_organ m
start with m.org_id = '00000'
connect by prior m.org_id = m.parent_org_id; [查询org_id为‘00000’的所有父节点,并按倒叙排序]
select distinct root,root_leve,org_Id
from
(
select sys_connect_by_path (org_id, '/') as PATH,connect_by_root(org_id) as root,connect_by_root(org_leve) as root_leve,t.*
from sm_ORGAN t
start with org_leve IN ('3')
connect by NOCYCLE parent_org_id = prior org_id
) a ;

模糊查询(||是连接符)

      SUB.AU_OPER LIKE '%'||#auOper#||'%' AND

oracle数据库中日期进行比较

      createDate  = to_date(sysdate,'yy-MM-dd hh24:mi:ss')
或者直接比较 createDate > '2013-09-08 00:00:00'
或者 createDate = to_date('','yyyyMMdd')
或者 createDate = date'2016-09-09'

Oracle数据库中chr()、ascii()、asciistr()、convert()函数的使用 ,nvl()

  • nvl(字段名,'判断字段如果为空的话这里填你想要替换的值')
  • to_date( NVL2(T1.txdonetime, substr(T1.txdonetime,0,14), ''),'yyyy-MM-dd hh24:mi:ss') txdonetime , varchar2类型日期转换date
  • nvl(字段,'NA')
  • 意思如果字段为空则输出NA的字符串
-- 将查询字段中的name名称中部分汉字转换成想要的结果
SELECT replace(
replace(
replace('xxxxxxxxxxxxxxxxxxxxx', ''|| chr(15xxxx92) || chr(1524xx81) ||chr(1xxxx521) || chr(15xxxx814) ||chr(1xxxx592) || '', ''),
''|| chr(1xxxx02) || chr(1xxxx485) || chr(149xxxx48) || chr(14xxxx6) || chr(153xxxx92) || '', ''),
''|| chr(150xxxx3) || chr(15xxxxx425) || chr(x770xxx2) ||chr(15xxxx08) || '', '') ORG_xxxx
FROM SMS_xxxxx ORG
WHERE 1 = 1
AND ORG_xxxx = '0951' ; select ''|| chr(15252223392) ||chr(1225303592) || '' aa from dual; -- 拼接字符串
select ascii('国') aa from dual; -- 将汉字转为数字
select chr(15047613) bb from dual; --将数字转为汉字
select replace('111123224455', '22' , '44') aa from dual; --替换字符串中的字符
select asciistr('国汉字之都') aa from dual; --将一串字符串转为中文编码 \56FD\6C49\5B57\4E4B\90FD
select convert('在中国','zhs16gbk','utf8') aa from dual; --将字符串从一种字符转为另一种字符

使用 WM_CONCAT(us.USeER_ID) 函数可以将单组查询结果转为一列一行, 数据中间用 " , "分隔

    select   WM_CONCAT(us.USeER_ID) USERS  from  sm_euser  us   where  us.oreg_id = '0200' ;

建表之前先判断表是否存在 , 若存在,则删除

declare
num number;
begin
select count(1) into num from user_tables where table_name = upper('sys_area') ;
if num > 0 then
execute immediate 'drop table sys_area' ;
end if;
end;

使用oracle若信息存在,则更新, 若不存在, 则插入 [merge into 大数据量的话可以使用这个优化]

merge into BOS_PARA_CONL_RULES a
using bos_para_codel_info b
on (a.modeel_no = b.model_no)
when MATCHED then
update
set trade_system = #tradeSystem#,
trade_name = #tradeName#,
note = #Note#,
system_basis = #systemBasis#
where b.modeel_no = #modelNo#
When not matched then
insert
(TRADE_SYSTEM,
TRADE_NAME,
NOTE,
SYSTEM_BASIS)
values
(#tradeSystem#,
#tradeName#,
#Note#,
#systemBasis#) where b.modeel_no = #modelNo#

TRUNC 函数的用法

--1
TRUNC(date[,fmt])
 TRUNC(TO_DATE('24-Nov-1999 08:37 pm','dd-mon-yyyy hh:mi am'),'hh') ='24-Nov-1999 08:00:00 am'   trunc(sysdate,'yyyy') --返回当年第一天。
  trunc(sysdate,'mm') --返回当月第一天。
  trunc(sysdate,'d') --返回当前星期的第一天。
  trunc(sysdate,'dd')--返回当前年月日
--2
TRUNC(for number)
 TRUNC(number[,decimals])
  其中:
  number 待做截取处理的数值
  decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分   下面是该函数的使用情况:
  TRUNC(89.985,2)=89.98
  TRUNC(89.985)=89
  TRUNC(89.985,-1)=80
  • 注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。与取整类似,比如参数为1即取整到十分位,如果是-1,则是取整到十位,以此类推。

Oracle trunc()函数的用法

--日期
1.select trunc(sysdate) from dual --2011-3-18 今天的日期为2011-3-18
2.select trunc(sysdate, 'mm') from dual --2011-3-1 返回当月第一天.
3.select trunc(sysdate,'yy') from dual --2011-1-1 返回当年第一天
4.select trunc(sysdate,'dd') from dual --2011-3-18 返回当前年月日
5.select trunc(sysdate,'yyyy') from dual --2011-1-1 返回当年第一天
6.select trunc(sysdate,'d') from dual --2011-3-13 (星期天)返回当前星期的第一天
7.select trunc(sysdate, 'hh') from dual --2011-3-18 14:00:00 当前时间为14:41
8.select trunc(sysdate, 'mi') from dual --2011-3-18 14:41:00 TRUNC()函数没有秒的精确
--数字
/*
TRUNC(number,num_digits)
Number 需要截尾取整的数字。
Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。
TRUNC()函数截取时不进行四舍五入
*/
9. select trunc(123.458) from dual --123
10.select trunc(123.458,0) from dual --123
11.select trunc(123.458,1) from dual --123.4
12.select trunc(123.458,-1) from dual --120
13.select trunc(123.458,-4) from dual --0
14.select trunc(123.458,4) from dual --123.458
15.select trunc(123) from dual --123
16.select trunc(123,1) from dual --123
17.select trunc(123,-1) from dual --120

创建序列

create sequence SEQ_xxOS_AUxxxED_FB_ID
minvalue 1
maxvalue 99999999999999999999
start with 669408473
increment by 1
cache 20
cycle;
--SEQUENCE
GRANT SELECT, ALTER ON SEQ_xxOS_AUxxxED_FB_IDxxOxxxETL;
GRANT SELECT, ALTER ON SEQ_xxOS_AUxxxED_FB_IDxxxxxR;
--SEQUENCE SYNONYM
CREATE OR REPLACE PUBLIC SYNONYM SEQ_xxOS_AUxxxED_FB_IDFOR sxxS.SEQ_xxOS_AUxxxED_FB_ID;

动态菜单权限(至少需要5张表)

select * from xx_mxenu;           //菜单表
select * from xx_UxER; //用户表
select * from xx_SSxTEM_ROxLE; //角色表
select * from xx_USxER_ROxLE; //用户角色表
select * from xxEF_RxLE_MExNU; //角色菜单表

字典表可以做成2张表, 一张存储该字典字段的主题id, 另一张存放该主题id需要存储那些字典字段

    select * from bos_comm_field f where f.field_name='GET_CHECK_TYPE';
select * from bos_comm_code C WHERE C.CODE_TYPE='CHECK_TYPE' ;

oracle的配置文件tnsnames.ora 里面内容可以改下自定义的, 例如下面开发库这么一长串数据库, =左边的可以自定义, 然后连接的时候数据库框就填左边的,相当于=右边的一长串

      10.10.10.100 = (DESCRIPTION =(ADDRESS=(PROTOCOL=TCP) (HOST = 10.10.10.100) (PORT=1234))(CONNECT_DATA=(SID=oredd)))
xxx/123456

oracles数据库中创建表, 并赋予其他角色权限

--SYNONYM
CREATE OR REPLACE PUBLIC SYNONYM xxxxxx表名 FOR 库名.xxxxxx表名;
-- GRANT/REVOKE OBJECT PRIVILEGES
GRANT SELECT, INSERT, UPDATE, DELETE ON xxxxxx表名 TO 用户名;

id取值(序列+日期串)

 select   to_char(sysdate, 'yyyymmdd')||lpad(seq_xxxxxtem_id.nextval,15, '0')   from  dual;

存储过程中删除表

EXECUTE IMMEDIATE 'TRUNCATE TABLE TEMP_ITEM_ACC';

未完后续补充中。。。。。。。。。。

oracle 常用sql 经典sql函数使用 sql语法的更多相关文章

  1. ORACLE常用数值函数、转换函数、字符串函数介绍

    ORACLE常用数值函数.转换函数.字符串函数介绍. 数值函数: abs(m) m的绝对值 mod(m,n) m被n除后的余数 power(m,n) m的n次方 round(m[,n]) m四舍五入至 ...

  2. Oracle中的内置函数在sql中的转换整理

    程序里面经常会即支持Oracle数据库,又支持sql数据库.而有些Oracle内置函数用的比较多,但在sql中语法有些不同,我做了些整理,希望可以帮助大家.... 1.oracle中的内置函数:ora ...

  3. SQL Server 存储过程 函数 和sql语句 区别

    存储过程与sql语句 存储过程的优点: 1.具有更好的性能   存储过程是预编译的,只在创建时进行编译,以后每次执行存储过程都不需再重新编译,   而一般 SQL 语句每执行一次就编译一次,因此使用存 ...

  4. SQL Server数据库(SQL Sever语言 函数以及SQL编程)

    1.数学函数:操作一个数据,返回一个结果 --去上限: ceiling ☆select ceiling(price) from car --去下限:floor ☆select floor(price) ...

  5. SQL Server语言 函数以及SQL编程

    1.数学函数:操作一个数据,返回一个结果 --去上限: ceiling ☆select ceiling(price) from car --去下限:floor ☆select floor(price) ...

  6. Sql server 开窗函数over()的语法

    用法一:与ROW_NUMBER()函数结合用,给结果进行排序编号,如图: 代码如下: SELECT ROW_NUMBER() over(order by RequiredDate) num ,* fr ...

  7. ORACLE常用数值函数、转换函数、字符串函数

    本文更多将会介绍三思在日常中经常会用到的,或者虽然很少用到,但是感觉挺有意思的一些函数.分二类介绍,分别是: 著名函数篇 -经常用到的函数 非著名函数篇-即虽然很少用到,但某些情况下却很实用 注:N表 ...

  8. oracle 常用工具类及函数

    j_param json; jl_keys json_list; -- 创建json对象j_param j_param := json(p_in_str); -- 校验param域是否缺少必填参数 j ...

  9. Oracle数据库之PL/SQL过程与函数

    Oracle数据库之PL/SQL过程与函数 PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保存到数据 ...

  10. 13、SQL Server 自定义函数

    SQL Server 自定义函数 在SQL Server中不仅可以使用系统函数(如:聚合函数,字符串函数,时间日期函数等)还可以根据需要自定义函数. 自定义函数分为标量值函数和表值函数. 其中,标量值 ...

随机推荐

  1. FCS省选模拟赛 Day1

    Description  Solution T1 shopping 目测是插板法乱搞一下 发现题解写的是容斥dp: \[ ans = \sum_i (-1)^ig[i] \] \(g[i]\)表示的有 ...

  2. 统计单词Java

    功能0:输出某个英文文本文件中 26 字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后面两位. 功能1:输出文件中所有不重复的单词,按照出现次数由多到少排列,出现次数同样多的,以字 ...

  3. Java 基础:单例模式 Singleton Pattern

    1.简介 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单一的类,该类负责创 ...

  4. Redis面试问答(子文章)(持续更新)

    -----> 总文章 入口 文章目录 [-----> 总文章 入口](https://blog.csdn.net/qq_37214567/article/details/90174445) ...

  5. Pycon 北京2019

  6. JDBC 操作

    简单的 JDBC 操作主要有: JdbcTemplate query queryForObject queryForList update execute 简单使用如下所示. 初始化数据库 sprin ...

  7. svn更新,清理,上传时出现乱码解决方案

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_35703883/articl ...

  8. 解决 screen 连接不上,提示“There is no screen to be resumed matching 18352.” 的问题

    当你挂起screen,下次想重新连上screen时,有时会出现screen session的状态为Attached但是却连不上的情况,比如我想重新进入session id 为18352的screen, ...

  9. Workstation 14 Returns EFI Network Start PXE over IPv4 When Installing New Win10 Guest O/S

    当启动出现“Click any key to boot from DVD”时候,需要键盘点击一下,即可解决. 参考:https://communities.vmware.com/thread/5730 ...

  10. Java RMI实践

    Java远程方法调用,即Java RMI(Java Remote Method Invocation).一种用于实现远程过程调用的应用程序编程接口.客户机上运行的程序可以调用服务器上的对象. 缺点:只 ...