-- - 转小写 输出:abcdef SELECT Lower ( ' aBCDEF ' ); -- - 转大写 输出:ABCDEF SELECT UPPER ( ' ABcdef ' ); -- 去左空格 ->'ABCDEF ' SELECT LTRIM ( ' ABCDEF ' ); -- 去右空格 ->' ABCDEF' SELECT RTRIM ( ' ABCDEF ' ); -- 从左截取字符串 ->abcde SELECT LEFT ( ' abcdefg123456 ' , 5 ); -- 从左截取字符串 ->23456 SELECT RIGHT ( ' abcdefg123456 ' , 5 ); -- - 查询传入字符起始位置 为0 SELECT CHARINDEX ( ' a ' , ' ab ' ) -- - 截取字符串 如: 从第三个字符开始截取两个长度,输出:cd SELECT SUBSTRING ( ' abcdefghi ' , 3 , 2 ) -- - 替换字符串 输出:A4CDEFG4AC SELECT REPLACE ( ' ABCDEFGBAC ' , ' B ' , 4 ); -- - 以指定的次数重复字符串值 输出:ABAB SELECT REPLICATE ( ' AB ' , 2 ) -- - 返回字符串值的逆序 输出 :FEDCBA SELECT REVERSE ( ' ABCDEF ' ) -- - 数据类型转换 输出:13 SELECT CAST ( ' 3 ' as int ) + 10 -- -- 时间:---- -- 获取现在时间 输出:2013-03-19 16:17:27.437 select GETDATE (); -- - 获取日期 select day ( GETDATE ()); -- - 获取年 select year ( GETDATE ()); -- - 获取月份 select MONTH ( GETDATE ()); -- - 添加时间 YEAR,DAY,HOUR,MONTH -- 添加时间:输出 2023-03-19 16:20:06.763 select dateadd ( YEAR , 10 , GETDATE ()); -- - DATENAME (<datepart>, <date>) -- 以字符串的形式返回日期的指定部分此部分。由datepart 来指定。 SELECT DATENAME ( year , GETDATE ()); -- -DATEPART (<datepart>, <date>) -- -以整数值的形式返回日期的指定部分。此部分由datepart 来指定。 SELECT DATEPART (yy, GETDATE ()); -- 相当于 year(getdate()) SELECT DATEPART (mm, GETDATE ()); -- 相当于 month(getdate()) SELECT DATEPART (dd, GETDATE ()); -- 相当于 day(getdate()) SELECT DATEPART (hh, GETDATE ()); -- -- 时间格式化函数 Select CONVERT ( varchar ( 100 ), GETDATE (), 20 ); -- 2013-03-19 16:34:50 Select CONVERT ( varchar ( 100 ), GETDATE (), 23 ); -- 2013-03-19 Select CONVERT ( varchar ( 100 ), GETDATE (), 8 ); -- 16:35:54 -- - DateDIFF 比较时间 输出:6 SELECT DATEDIFF (hh, ' 2013-03-19 12:34:50 ' , ' 2013-03-19 18:34:50 ' ) -- - 常用 统计函数 /* AVG ( ) -返回的平均价值 count( ) -返回的行数 first( ) -返回第一个值 last( ) -返回最后一个值 max( ) -返回的最大价值 min( ) -返回最小的价值 total( ) -返回的总和 */ -- - row_number select row_number() over ( order by field1) as row_number, * from t_table
行转列:
SELECT [ DAY ] , sum ( CASE result WHEN ' 胜 ' then 1 else 0 end ) as 胜, sum ( CASE result WHEN ' 负 ' then 1 else 0 end ) as 负 from test GROUP BY [ day ]
游标:
事务
BEGIN TRAN update Blog set name = name + ' Rhythmk ' where Id = ' 04C65E2C-E604-4295-9F20-0004B72DE0B4 ' select CAST ( ' 107a ' as INT ) if @@error <> 0 BEGIN SELECT ' A ' ROLLBACK TRAN END ELSE BEGIN SELECT ' B ' COMMIT TRAN END
第二种写法
BEGIN TRAN UPDATE BlogCate SET name = name + ' Rhythmk ' WHERE Id = ' 04C65E2C-E604-4295-9F20-0004B72DE0B4 ' SELECT CAST ( ' 107 ' AS INT ) BEGIN try SELECT ' B ' COMMIT TRAN END try BEGIN catch SELECT ' A ' ROLLBACK TRAN END catch
不使用游标 循环执行此处过程:
可以先生成临时表,然后循环取数据
-- -- 不使用游标,循环执行存储过程 DECLARE @ItemCount INT , @GUID UNIQUEIDENTIFIER SET @ItemCount = 0 SELECT @ItemCount = COUNT ( * ) FROM dbo.data_dict SELECT TOP 1 @GUID = GUID FROM dbo.data_dict WHILE @ItemCount > 0 BEGIN DELETE FROM data_dict WHERE GUID = @GUID -- 执行存储过程 EXEC PROC_INSERT_A 1 SELECT TOP 1 @GUID = GUID FROM dbo.data_dict SELECT @ItemCount = COUNT ( * ) FROM dbo.data_dict END