SQL Server 语法小技巧-持续更新

by kevin 20. 六月 2013 16:46 >
  • 获取今天零点时间
   1: DECLARE @Today DateTime
   2:  
   3: SET @Today = DATEADD(dd, DATEDIFF(dd,0,GETDATE()), 0)  

 

  • 更好的支持模糊搜索

很多时候,我们会 LIKE 查询的做法是这样的。

   1: select * from TableName where ColumnName LIKE '%Input%'

但如果上面的Input是这样的 keyword1 keyword2 ,那么数据库中包含keyword1 XXXXX keyword2 的记录就不会被查询出来,这里可以稍微的改进一下。

   1: select * from TableName where ColumnName LIKE '%keyword1%keyword2%'

简单实用的技巧,另外还是要记得防止SQL注入。

  • 多行合并为一行,类似string.join

google了一下,基本上都说用

for xml path

   1: SELECT OrderItemDesc FROM #OrderItem WHERE OrderId=O.OrderId FOR XML Path('')

如果OrderItemDesc中包含xml转义字符,会被转义,比如 “<” 转义为 “&lt”

所以要小加工一下

   1: (SELECT OrderItemDesc FROM #OrderItem WHERE OrderId=O.OrderId FOR XML Path(''), type).value('.','nvarchar(max)')
分享到: 更多