大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说平时常用sql_sql常用函数,希望您对编程的造诣更进一步.
总结一下平时用到最多的sql语句
1.特殊日期
–今天凌晨
SELECT DATEADD(dd,DATEDIFF(dd,0,GETDATE()),0)
–明天凌晨
SELECT DATEADD(dd,DATEDIFF(dd,0,GETDATE())+1,0)
–当周周一(每周从周日开始)
SELECT DATEADD(wk,DATEDIFF(wk,0,GETDATE()),0)
–当月的第一天
SELECT DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)
–当月的最后一天
SELECT DATEADD(dd,-1,DATEADD(mm,DATEDIFF(mm,0,GETDATE())+1,0))
–今年的第一天
SELECT DATEADD(yy,DATEDIFF(yy,0,GETDATE()),0)
–今年的最后一天
SELECT DATEADD(dd,-1,DATEADD(yy,DATEDIFF(yy,0,GETDATE())+1,0))
2.字符串处理
–去除空格
SELECT LTRIM(col1),RTRIM(col2),LTRIM(RTRIM(col3)) FROM tableName
SELECT
SUBSTRING(col1,3,2) –从第3个字符开始截取2个,得到截取的2个字符
,STUFF(col2,3,2,””)–从第3个字符开始删除2个,得到剩下字符
,STUFF(col3,3,2,”XXX”)–从第3个字符开始,将第3、4两个字符替换成XXX
,REPLACE(col4,”old”,”new”)–将col4中的old全部替换成new
FROM tableName
–将列col1用,拼接起来
SELECT STUFF((SELECT “,”+col1 FROM tableName WHERE 过滤条件 FOR XML PATH(“”)),1,1,””)
–多位流水号,用0或空格补充 例如A000001,A000002……,前缀可为固定字符,或者可变的年、月、日等
DECLARE @flowNo AS VARCHAR(10)
DECLARE @nextNo AS int
SELECT @flowNo = MAX(flowNo) FROM tableName WHERE 过滤条件
IF(@flowNo IS null)
SET @flowNo = “A000001”
ELSE
BEGIN
SET @nextNo = RIGHT(@flowNo,6)+1
SET @flowNo = LEFT(@flowNo,1)+REPLICATE(“0”,6-LEN(@nextNo))+CONVERT(VARCHAR(6),@nextNo)
END
SELECT @flowNo;–要获取的流水号
–年 2001对应1,2009对应9,2010对应A,2035对应Z,2035之后的可自行调整
SELECT SUBSTRING(“123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”,(YEAR(GETDATE())-2000)%36,1)
–月 10月,11月,12月分别对应A,B,C
SELECT SUBSTRING(“123456789ABC”,MONTH(GETDATE()),1)
–月 英文简写
SELECT SUBSTRING(“JanFebMarAprMayJunJulAugSepOctNovDec”,(MONTH(GETDATE())-1)*3+1,3)
–日 1号对应1,9号对应9,10号对应A,以此类推
SELECT SUBSTRING(“123456789ABCDEFGHIJKLMNOPQRSTUV”,DAY(GETDATE()),1)
3.辅助
–去除重复数据,数据表中有很多重复数据,如果其中col1,col2,col3,col4,col5可以表示出每一组重复数据
;WITH cte AS
(SELECT col1,col2,col3,col4,col5
,ROW_NUMBER()OVER(PARTITION BY col1,col2,col3,col4,col5 ORDER BY col1) AS rn
FROM tableName)
DELETE FROM cte WHERE rn > 1
–快速打开存储过程、视图等
sp_helptext 存储过程名称 –名称前不要加dbo.等所有者
sp_helptext 视图名称 –名称前不要加dbo.等所有者
–用到了某些字符串的视图,存储过程
SELECT a.name,b.[text]
FROM sysobjects a
INNER JOIN syscomments b ON a.id = b.id
WHERE b.[text] LIKE “%你要查的字符串%”
AND a.xtype=”v”–“p”
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10450.html