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

