zoukankan      html  css  js  c++  java
  • SQL 常用函数

    1. 强制类型转换
    2. 字符串重复指定次数
    3. 截取字符串
    4. GUID
    5. ISNULL() 函数处理空值
    6. NULLIF() 函数处理空值
    7. DATEPART(dw,DATE)  日期转换
    8. XML
    9. 行转列
    10. 设置日期默认读取语言
    11. FOR XML PATH('')

    1、强制类型转换

    1 cast(column_name as varchar2(20))
    2 CONVERT(VARCHAR(19),GETDATE())
    3 CONVERT(VARCHAR(10),GETDATE(),110) 
    4 
    5 --Dec 29 2008 11:45 PM
    6 --12-29-2008
    View Code

    2、字符串值重复指定的次数

    1 REPLICATE ( string_expression ,integer_expression )
    2 
    3 --string_expression  字符串
    4 --integer_expression  重复的次数
    View Code

    3、截取字符串

    1 --left 从左边起截取N个字符
    2  left('123456',3)
    3 
    4 --效果:123
    5 
    6 --right 从右边起截取N个字符
    7   right('123456',3)
    8 
    9 --效果:456
    View Code

    4、GUID

    1 newid()
    2 
    3 replace(ltrim(newid()),'-','')
    View Code

    5、使用ISNULL()函数来处理空值

     1 --ISNULL()函数的是用指定的值替换空值。
     2 --语法:
     3 ISNULL (check_expression , replacement_value )
     4 
     5 declare @xx varchar(32)
     6 set @xx = null
     7 print ISNULL(@xx,'123')
     8 
     9 
    10 --输出 123
    View Code

    6、使用NULLIF()函数来处理空值

    1 --NULLIF()函数功能:如果一个数据表中应该使用NULL 值的地方使用了其他数据,那么就可以使用NULLIF()函数将这些不正确的值替换为空值。
    2 --语法:
    3 NULLIF ( expression , expression )
    4 
    5 declare @xx varchar(32)
    6 set @xx = '123'
    7 print nullif(@xx,'123')
    8 
    9 --输出 null
    View Code

    7、DATEPART(dw,DATE)  日期转换

    1 --该日期对应周日
    2 print DATEPART(dw,'2013-10-26')
    3 
    4 --输出 7
    5 --如果是周六 输出1 
    6 --周一 输出2
    7 --周二 输出3
    8 --...
    View Code

    8、XML

     1 select 
     2     b.Col2
     3 from 
     4     (select COl2=convert(xml,'<root><v>'+replace(Department,',','</v><v>')+'</v></root>') from ERPUser where UserName='test2')a
     5 outer apply
     6     (select Col2=C.v.value('.','nvarchar(100)') from a.COl2.nodes('/root/v')C(v))b
     7 
     8 
     9 
    10 --
    11 --Department 
    12 -- 11,12
    13 
    14 --执行后结果
    15 --COL2
    16 --11
    17 --12
    View Code

    9、行转列

     1 if object_id('tb')is not null drop table tb
     2 
     3 go
     4 
     5 create table tb(姓名 varchar(10),课程 varchar(10),分数 int)
     6 
     7 insert into tb values('张三','语文',74)
     8 
     9 insert into tb values('张三','数学',83)
    10 
    11 insert into tb values('张三','物理',93)
    12 
    13 insert into tb values('李四','语文',74)
    14 
    15 insert into tb values('李四','数学',84)
    16 
    17 insert into tb values('李四','物理',94)
    18 
    19 go
    20 
    21 select*from tb
    22 
    23 go
    24 
    25 --姓名  课程 分数
    26 --张三  语文  74
    27 --张三  数学  83
    28 --张三  物理  93
    29 --李四  语文  74
    30 --李四  数学  84
    31 --李四  物理  94        
    32 
    33 select* from tb pivot(max(分数)for 课程in(语文,数学,物理))a
    34 
    35 --或者
    36 select 姓名,
    37 
    38  max(case课程when'语文'then分数else0end)语文,
    39 
    40  max(case课程when'数学'then分数else0end)数学,
    41 
    42  max(case课程when'物理'then分数else0end)物理
    43 
    44 fromtb
    45 
    46 groupby姓名
    47 
    48 --姓名  语文  数学  物理
    49 --李四   74       84       94
    50 --张三   74   83       93
    View Code

     10、设置日期默认读取语言

     1 --只针对单个数据库
     2 
     3 SET LANGUAGE 简体中文
     4 GO
     5 
     6 --may 12 2012
     7 
     8 --执行后
     9 
    10 --04 12 2012
    View Code

     11 、多行合并 FOR XML PATH('')

    --创建 test 表 ,插入数据
     
    CREATE TABLE test(code varchar(50), [values] varchar(10),[count] int)
    INSERT test SELECT '001', 'aa',1
    UNION ALL SELECT '001', 'bb',2
    UNION ALL SELECT '002', 'aaa',4
    UNION ALL SELECT '002', 'bbb',5
    UNION ALL SELECT '002', 'ccc',3;
    
    
    SELECT code, data=STUFF((SELECT ','+[values] FROM test t WHERE code=t1.code FOR XML PATH('')), 1, 1, ''),sum([count]) as [count]
    FROM test t1
    GROUP BY code
    
    
    --查询结果
     
    --001    aa,bb    3
    --002    aaa,bbb,ccc    12
    View Code
  • 相关阅读:
    day 13 python循环
    day 12 python开始--字符串
    day eleven 正则表达式以及shell基础学习
    day ten linux学习
    eight day linux网络基础
    设计模式
    JAVA中JDK和JRE的区别
    工作流基本概念__了解就行
    mybitis注解开发_curd操作
    Spring boot 整合SSM框架三层架构并前后台restful风格交互
  • 原文地址:https://www.cnblogs.com/LYshuqian/p/2826745.html
Copyright © 2011-2022 走看看