oracle 常用sql 经典sql函数使用 sql语法

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

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';

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

原文地址:https://www.cnblogs.com/eian/p/11478491.html

时间: 2024-10-08 05:25:32

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

oracle常用数据库内置函数

函数 返回值 样例 显示 CEIL(n) 大于或等于数值n的最小整数 SELECT CEIL(10.6) FROM TABLE_NAME; 11 FLOOR(n) 小于等于数值n的最大整数 SELECT FLOOR (10.6) FROM TABLE_NAME; 10 MOD(m,n) m除以n的余数,若n=0,则返回m SELECT MOD (7,5) FROM TABLE_NAME l; 2 POWER(m,n) m的n次方 SELECT POWER (3,2) FROM TABLE_NAM

SQL Server语言 函数以及SQL编程

1.数学函数:操作一个数据,返回一个结果 --去上限: ceiling ☆select ceiling(price) from car --去下限:floor ☆select floor(price) from car --ABS 绝对值 --PI(),圆周率,括号里不加任何东西 --round() 四舍五入 ☆select round(3.76 ,0) --sqrt() 开根号 --square() 平方 2.字符串函数 --转换大写upper() --转换小写lower() --去空格 lt

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

本文并不准备介绍全部的oracle函数,当前情势下,俺也还没这个时间,需要学习的东西太多了,要把多数时间花在学习经常能用上的技术方面:),所以如果是准备深入了解所有oracle函数的朋友,还是去关注:Oracle SQL Reference官方文档更靠谱一些. 本文更多将会介绍三思在日常中经常会用到的,或者虽然很少用到,但是感觉挺有意思的一些函数.分二类介绍,分别是: 著名函数篇 -经常用到的函数 非著名函数篇-即虽然很少用到,但某些情况下却很实用 注:N表示数字型,C表示字符型,D表示日期型,

Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)

PL/SQL子程序 包括函数和过程.这里的函数指的是用户自己定义的函数,和系统函数是不同的.子程序一般是完成特定功能的PL/SQL程序块,并且具有一定的通用性,可以被不同的应用程序多次调用.Oracle提供可以把PL/SQL程序存储在数据库中,并可以再任何地方来运行它.这样就叫做存储过程或者是函数.过程和函数的唯一区别就是函数总是向调用者返回数据,而过程则不返回数据. 函数 如果用户要经常执行某些操作,并且需要返回特定的数据,那么就可以将这些操作构造成一个函数. 可以使用SQL语句定义函数. 基

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

Oracle数据库之PL/SQL过程与函数 PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保存到数据库中,以便共享. 过程和函数均存储在数据库中,并通过参数与其调用者交换信息.过程和函数的唯一区别是函数总向调用者返回数据,而过程不返回数据. 1. 存储过程概念 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,存储在数据库中.经过第一次编译后再次

13、SQL Server 自定义函数

SQL Server 自定义函数 在SQL Server中不仅可以使用系统函数(如:聚合函数,字符串函数,时间日期函数等)还可以根据需要自定义函数. 自定义函数分为标量值函数和表值函数. 其中,标量值函数用于返回单个值,而表值函数用于返回一个结果集. 函数参数 参数可以是常量.表中的某个列.表达式或其他类型的值.在函数中有三种类型的参数. 1.输入:指必须输入一个值. 2.可选值:在执行该参数时,可以选择不输入参数. 3.默认值:函数中默认有值存在,调用时可以不指定该值. 创建标量值函数 语法:

Oracle SQL*plus常用的命令和函数

Oracle中常用的命令和函数,做个整理,以备以后用到,方便查阅. 常用命令: 连接sqlplus命令行下运行cmd进入,如以sys模式登陆,命令如下:(1).sqlplus "sys/zhb126 as sysdba" (2).sqlplus/nolog  connect sys/zhb126 as sysdba (3).sqlplus scott/tiger 启动数据库实例 startup --启动数据库的同时启动控制文件.数据文件 startup mount --启动数据库的同时

四、oracle基本sql语句和函数详解

一.oracle常用数据类型 一.  数据定义语言(ddl) 数据定义语言ddl(data definition language)用于改变数据库结构,包括创建.更改和删除数据库对象. 用于操纵表结构的数据定义语言命令有: create table alter table truncate table drop table eg. --创建tb_stu表数据结构 create table tb_stu( id number, name varchar2(20) );   --修改tb_stu表数

oracle常用SQL语句(汇总版)

Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象 一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……); INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名; 字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’ 如果字段值里包含单引号’ 需要

ORACLE 常用SQL查询

一.ORACLE的启动和关闭 1 .在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su  -  oracle a.启动ORACLE系统 oracle > svrmgrl SVRMGR > connect internal SVRMGR > startup SVRMGR > quit b.关闭ORACLE系统 oracle > svrmgrl SVRMGR > connect internal SVRMGR > shutdown