• Oracle 语法


    1、行转列函数

    11gR2以前:

    WM_CONCAT函数,

    使用方式形如:

    SELECT SUS_SNO,WM_CONCAT(SRC_FILENAME) AS AAA FROM AML_SUS_TRD_FILE GROUP BY SUS_SNO;

    首先,数据表内容如下:

    SELECT * FROM AML_SUS_TRD_FILE;

    目前5条记录,SUS_SNO=1对应的有4条,SUS_SNO=2的有1条记录,前面给出的使用方法出现的效果如下:

    那么我们现在已经得到了按照一个编号取得了对应的列转入行数据的效果了。

    注意:这里不自己选择分组的话,仅仅使用WM_CONCAT函数会将参数列的所有数据集合到一条记录中

    默认分隔符是逗号,不需要的话可以用replace函数再进行替换。

    11gR2给出了一个新的函数LISTAGG:

    语法:LISTAGG( [,]) WITHIN GROUP (ORDER BY ) [OVER (PARTITION BY )]

    • 需要聚合的列或者表达式
    • WITH GROUP 关键词
    • 分组中的ORDER BY子句

    SQL:SELECT SUS_SNO,LISTAGG(SRC_FILENAME,',') WITHIN GROUP (ORDER BY SRC_FILENAME) AS AAA FROM AML_SUS_TRD_FILE GROUP BY SUS_SNO

    一样可以达成前面函数的效果。

    注意:不分组依旧是聚合到一行数据中 。可以在函数参数中自由选择分隔符。

    2、sys账户密码忘记后的办法

    win+R 进入console;输入命令"sqlplus /nolog",进入Oracle命令模式;输入"conn / as sysdba";然后就是正常的修改密码"alter user sys identified by password";

    注意:此方法适用于Oracle本机适用,然后测试过程发现新密码跟原密码都可以使用。

    3、SQL Sever 2008R2 某个数据库的ldf文件过大,笔者体验是40G+,硬盘直接炸了。

    下列语句中【DB替换为目标DB】

     USE [master]
    ALTER DATABASE [DB]
    SET RECOVERY SIMPLE WITH NO_WAIT
    ALTER DATABASE [DB]
    SET RECOVERY SIMPLE
    GO
    USE [DB]
    DECLARE @logname VARCHAR(150)
    SELECT @logname = name
    FROM   sys.database_files
    WHERE  name LIKE'%log'
    DBCC SHRINKFILE(@logname, 11, TRUNCATEONLY)
    GO
    USE [master]
    ALTER DATABASE [DB]
    SET RECOVERY FULL WITH NO_WAIT
    ALTER DATABASE [DB]
    SET RECOVERY FULL
    GO

  • 相关阅读:
    3.8快乐
    只剩一个人了
    需求分析
    再也不看皇马比赛
    最近蛮忙,没头绪
    ↗☻【响应式Web设计 HTML5和CSS3实战 #BOOK#】第5章 CSS3:选择器、字体和颜色模式
    ↗☻【高性能网站建设进阶指南 #BOOK#】第12章 尽早刷新文档的输出
    ↗☻【响应式Web设计 HTML5和CSS3实战 #BOOK#】第4章 响应设计中的HTML5
    ↗☻【JavaScript】code
    ↗☻【高性能网站建设进阶指南 #BOOK#】第11章 划分主域
  • 原文地址:https://www.cnblogs.com/TTaiAL/p/6122868.html
Copyright © 2020-2023  润新知