• Oracle相关笔记


    1、配置路径:app etworkadmin nsnames.ora

    orcl36 =

      (

        DESCRIPTION =

          (ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.3.12)(PORT = 1521))

          (CONNECT_DATA =

            (SERVICE_NAME = p4iaceda)

          )

      )

    2、DML语言,比如update,delete,insert等修改表中数据的需要commit

    3、DDL语言,比如create,drop等改变表结构的,就不需要写commit(因为内部隐藏了commit)

    4、分页查询

    select c.* from (

        select a.*,row_number() over(order by create_time desc) idx from tablename a where 1=1  order by create_time desc
    ) c

    where c.idx > (pageNum - 1) * pageSize and c.idx <= pageNum * pageSize

    5、Oracle连接

    jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
    jdbc.url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ip)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=p4iaceda)))
    jdbc.username=*****
    jdbc.password=******

    6、TO_CHAR和TO_DATE的用法

    TO_CHAR(t.addtime, 'yyyy-mm-dd hh24:mi:ss')
    TO_DATE(#{endTime} , 'yyyy-mm-dd hh24:mi:ss')

    7、几行变成一行 

    select id,
    LISTAGG ( to_char(upload_path), ',') WITHIN GROUP(ORDER BY upload_path) AS file_name_list
    from ( select distinct id, upload_path from spc_chart_comment_upload )
    group by id

    解释:按id分组,把upload_path这一列按,隔开拼接在一起,变成新的列file_name_list

    8、row_number() over(partition by 列名1 order by 列名2 desc) 

    解析:表示根据 列名1 分组,然后在分组内部根据 列名2 排序,而此函数计算的值就表示每组内部排序后的顺序编号,可以用于去重复值

    9、decode函数

    DECODE(value,if 条件1,then 值1,if 条件2,then 值2,...,else 其他值)

    10、lag函数

    lag表示 分组排序后 ,组内后面一条记录减前面一条记录的差,第一条可返回 NULL

    11、批量插入数据,有则更新,无则插入

    <insert id="saveBatch" parameterType="java.util.List" > 
    MERGE INTO 表名 T1?
    USING (?
    <foreach collection="list" item="item" index="index" separator="union" >
    SELECT
    SYS_GUID() AS CODE,
    #{item.createDate,jdbcType=VARCHAR} AS CREATE_DATE,
    #{item.createBy,jdbcType=VARCHAR} AS CREATE_BY,
    #{item.flagDel,jdbcType=CHAR} AS FLAG_DEL,
    #{item.flagDisplay,jdbcType=CHAR} AS FLAG_DISPLAY,
    #{item.sort,jdbcType=DECIMAL} AS SORT
    FROM DUAL
    </foreach>) T2 ?
    /*判断是更新还是新记录的条件*/
    ON (
    T1./*判断数据是否重复的字段*/ = T2./*判断数据是否重复的字段*/
    AND T1./*判断数据是否重复的字段*/ = T2./*判断数据是否重复的字段*/
    )
    /*数据存在则更新*/
    WHEN MATCHED THEN
    UPDATE SET T./*需要更新的字段*/=T1/*需要更新的字段*/?
    /*数据不存在则插入新记录*/
    WHEN NOT MATCHED THEN
    INSERT
    (CODE,CREATE_DATE,CREATE_BY,FLAG_DEL,FLAG_DISPLAY,SORT)
    VALUES
    (T2.CODE,T2.CREATE_DATE,T2.CREATE_BY,T2.FLAG_DEL,T2.FLAG_DISPLAY,T2.SORT)
    </insert>

    12、plsql执行sql发生乱码

    select * from V$NLS_PARAMETERS;

    环境变量中添加
    LANG=zh_CN.UTF8
    NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

    13、在oracle中varchar和varchar2有什么区别?

    1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节
    2.VARCHAR2把空串等同于null处理,而varchar仍按照空串处理
    3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集

  • 相关阅读:
    js常用工具函数
    vue-cli跨域问题解决
    charles抓包404问题(左侧不显示配置)
    vuex存储与本地储存(localstorage、sessionstorage)的区别(笔记)
    借助axios的拦截器实现Vue.js中登陆状态校验的思路(笔记)
    cornerstone使用注意点
    本地仓库连接远程仓库,git本地新建项目上传到远程git仓库上正确流程
    做一个不那么差的程序员
    解决 php Call to undefined function shm_attach()
    Redis 常用的数据结构
  • 原文地址:https://www.cnblogs.com/wangsizheng/p/12923002.html
Copyright © 2020-2023  润新知