zoukankan      html  css  js  c++  java
  • slq 不常用函数、语法

    1、with as:

      WITH AS短语,可以称作为子查询部分(subquery factoring),可以定义一个SQL片断,该SQL片断会被整个SQL语句用到

      例如:嵌套查询:

        select * from table1 where id in

        (select id from table1 where Name like '%张%')

        使用 with as 可以写作:

        whit ids as (select id from table1 where Name like '%张%')

        select * from table1 where id in ids --ids就是上方 whit 的代码片段 

    2、for xml path

      FOR XML PATH ,是将查询结果集以XML形式展现,将多行的结果展示在同一行。

      例如:

        查询多个字段:

        select * from table1 for xml path('')

        查询结果:

          <ID>1</ID>
          <Name>张三</Name>
          <Sex>1</Sex>
          <Age>23</Age>
          <IsDel>0</IsDel>
          <ID>2</ID>
          <Name>柳柳</Name>
          <Sex>0</Sex>
          <Age>18</Age>
          <IsDel>0</IsDel>

        查询一个字段:

        1、select name from table1 for xml path ('')

        查询结果:<name>张三</name><name>李四</name><name>王五</name><name>赵柳</name>

        2、select name+',' from table1 for xml path ('') --不是默认格式则按照给定的格式输出

        查询结果:张三,李四,王五,赵柳,

    3、stuff

      将字符串插入到另一个字符串中。 它从第一个字符串的开始位置删除指定长度的字符;然后将第二个字符串插入到第一个字符串的开始位置

      例如:

        select stuff('abcdefg',2,3,'123456') --意思为从第二个位置删除三个,然后将后方字符串插入该位置

        结果:a123456efg

      注意:第一个位置是原始字符串,第二个参数是开始删除位置,第三个参数是删除个数,第四个参数为替换字符串

        查询值为 null 的情况:

          开始删除位置小于等于0,

          开始删除位置大于原始字符串长度

          删除个数为负数(删除数大于原始字符串长度则删除到最后一个字符)

    4、partition

      可以查询分组后组内排序的结果。

       例如:

        SELECT id,col1,col2,col3, ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY id DESC) AS ROW_NUM FROM test1 ; --查询结果是根据col1字段进行分组,每组下进行排序

        结果:

          id   col1  col2  col2  row_num

          1   1    2    3    1 

          5   2    6    5    1

          3   2    9    9    2

          2   2    7    3    3

          4   6    4    6    1

        根据col1进行分组,然后根据每组进行排序,不是一组的,row_num从1开始

  • 相关阅读:
    教你如何剖析源码
    singleCall单来源调用解析及实现
    守护进程详细解读
    终端&作业控制&会话启动过程
    时间复杂度&空间复杂度
    linux环形buff模拟多线程信号量操作
    linux多线程-互斥&条件变量与同步
    linux线程控制&线程分离
    栈帧的不安全程序示例
    如何获取程序返回值,退出码,错误码
  • 原文地址:https://www.cnblogs.com/ZbsCc/p/12366984.html
Copyright © 2011-2022 走看看