(MSSQL) SQL点滴

时不时用到的sql:


1.利用spt_values生成规律数据,比如2个时间段内的日期:

SELECT DATEADD(DD,number,@BeginDate) AS [Date] FROM master.dbo.spt_values 
		WHERE type='P' AND number between 0 and DATEDIFF(DD,@BeginDate,@EndDate)-1

 


2.利用XML合并行数据为字符串:

with temp as
(
	select 'a' as Content
	union 
	select 'b' as Content 
)


	SELECT 
      STUFF
	(
		REPLACE(
			REPLACE(
				--转换表数据为XML格式
				(SELECT ISNULL(Content,'') Content FROM temp
				FOR XML AUTO),
				'<temp Content="',
				','
			)
			,'"/>'
			,''
		)
		,
		1,1,'')	

执行结果:a,b

 

  3.LEN统计到“尾随空格”

LEN函数“返回指定字符串表达式的字符数,其中不包含尾随空格”。有时LEN函数会诡异地统计到多余的“尾随空格”,比如SELECT LEN(Content) FROM XX,返回20,可事实只有18个文字。其实很有可能是结尾带了换行回车,换行回车符查询出来你在IDE看不到,也copy不了,所以极不明显。换行符为char(10),回车符为char(13),替换掉即可。

还遇到的一种情况是varchar字段只存储了一个数字但类型转换时失败,好吧,也是因为数字后面带了换行回车...

 

你可能感兴趣的:(sql,xml)