zoukankan      html  css  js  c++  java
  • 平时常用sql

    总结一下平时用到最多的sql语句

    1.特殊日期

     1 --今天凌晨
     2 SELECT DATEADD(dd,DATEDIFF(dd,0,GETDATE()),0)
     3 --明天凌晨
     4 SELECT DATEADD(dd,DATEDIFF(dd,0,GETDATE())+1,0)
     5 --当周周一(每周从周日开始)
     6 SELECT DATEADD(wk,DATEDIFF(wk,0,GETDATE()),0)
     7 --当月的第一天
     8 SELECT DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)
     9 --当月的最后一天
    10 SELECT DATEADD(dd,-1,DATEADD(mm,DATEDIFF(mm,0,GETDATE())+1,0))
    11 --今年的第一天
    12 SELECT DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0)
    13 --今年的最后一天
    14 SELECT DATEADD(dd,-1,DATEADD(yy,DATEDIFF(yy,0,GETDATE())+1,0))


    2.字符串处理

     1 --去除空格
     2 SELECT LTRIM(col1),RTRIM(col2),LTRIM(RTRIM(col3)) FROM tableName
     3 
     4 SELECT 
     5 SUBSTRING(col1,3,2) --从第3个字符开始截取2个,得到截取的2个字符
     6 ,STUFF(col2,3,2,'')--从第3个字符开始删除2个,得到剩下字符
     7 ,STUFF(col3,3,2,'XXX')--从第3个字符开始,将第3、4两个字符替换成XXX
     8 ,REPLACE(col4,'old','new')--将col4中的old全部替换成new
     9 FROM tableName
    10 
    11 
    12 --将列col1用,拼接起来
    13 SELECT STUFF((SELECT ','+col1 FROM tableName WHERE 过滤条件 FOR XML PATH('')),1,1,'')
    14 
    15 
    16 --多位流水号,用0或空格补充 例如A000001,A000002……,前缀可为固定字符,或者可变的年、月、日等
    17 DECLARE @flowNo AS VARCHAR(10)
    18 DECLARE @nextNo AS int
    19 
    20 SELECT @flowNo = MAX(flowNo) FROM tableName WHERE 过滤条件 
    21 IF(@flowNo IS null)
    22   SET @flowNo = 'A000001'
    23 ELSE 
    24   BEGIN
    25     SET @nextNo = RIGHT(@flowNo,6)+1
    26     SET @flowNo = LEFT(@flowNo,1)+REPLICATE('0',6-LEN(@nextNo))+CONVERT(VARCHAR(6),@nextNo)
    27   END 
    28 SELECT @flowNo;--要获取的流水号
    29 
    30  
    31 
    32 --年 2001对应1,2009对应9,2010对应A,2035对应Z,2035之后的可自行调整
    33 SELECT SUBSTRING('123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',(YEAR(GETDATE())-2000)%36,1)
    34 
    35 --月 10月,11月,12月分别对应A,B,C
    36 SELECT SUBSTRING('123456789ABC',MONTH(GETDATE()),1)
    37 
    38 --月 英文简写
    39 SELECT SUBSTRING('JanFebMarAprMayJunJulAugSepOctNovDec',(MONTH(GETDATE())-1)*3+1,3)
    40 
    41 --日 1号对应1,9号对应9,10号对应A,以此类推
    42 SELECT SUBSTRING('123456789ABCDEFGHIJKLMNOPQRSTUV',DAY(GETDATE()),1)

    3.辅助

     1 --去除重复数据,数据表中有很多重复数据,如果其中col1,col2,col3,col4,col5可以表示出每一组重复数据
     2 ;WITH cte AS
     3   (SELECT col1,col2,col3,col4,col5
     4   ,ROW_NUMBER()OVER(PARTITION BY col1,col2,col3,col4,col5 ORDER BY col1) AS rn 
     5   FROM tableName)
     6 DELETE FROM cte WHERE rn > 1
     7 
     8 
     9 --快速打开存储过程、视图等
    10 sp_helptext 存储过程名称 --名称前不要加dbo.等所有者
    11 sp_helptext 视图名称 --名称前不要加dbo.等所有者
    12 
    13 
    14 --用到了某些字符串的视图,存储过程
    15 SELECT a.name,b.[text] 
    16 FROM sysobjects a 
    17 INNER JOIN syscomments b ON a.id = b.id
    18 WHERE b.[text] LIKE '%你要查的字符串%'
    19 AND a.xtype='v'--'p'
    20 
    21 
    22 --获取表tableName中所有的列名,并用组合。写insert的时候简直不要太爽
    23 SELECT STUFF((SELECT ','+name 
    24   FROM syscolumns 
    25   WHERE id = OBJECT_ID('tableName') 
    26   ORDER BY colorder   --colorder:按照列的添加顺序    name:按照列名顺序
    27   FOR xml path('')),1,1,'')
  • 相关阅读:
    HTTP协议及其POST与GET操作差异 & C#中如何使用POST、GET等
    php中0," ",null和false的区别
    php 上传大文件主要涉及配置upload_max_filesize和post_max_size两个选项。
    php 解决上传中文文件名时出现乱码的问题
    php学习之有用的资源 总结
    php 问题及原因总结
    php 汉字验证码
    php 图片验证码
    php 字母和数字验证码
    php 使用imagettftext()函数出问题的原因
  • 原文地址:https://www.cnblogs.com/gyxianzg/p/12051830.html
Copyright © 2011-2022 走看看