--- 转小写 输出: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
