SQL函数和可编程性
http://blog.163.com/guiguixyz@126/blog/static/65031961201443105440279/函数
{
字符串函数
{
len():获取字符串长度
upper():转为大写字符
lower():转为小写字符
ltrim():去掉左端空格
rtrim():去掉右端空格
left():从左端开始截取指定长度子串
right():从右端开始截取指定长度子串
substring()
{
截取从指定位置开始的指定长度的子串
首位字符索引为1
索引可以为负,表示首字符之前的某位
}
}
abs():求数值的绝对值
ceiling():数值向上取整
datalength():计算数据占用的字节数
日期函数
{
getdate():获取当前日期
sysdatetime():获取高精度时间
dateadd(时间增加部分,时间增加量,基础时间):获取增加后的时间
datediff(时间相减部分,减数,被减数):计算两时间之差
datepart(日期部分,源日期):获取日期某部分的值,返回数值类型
datename(日期部分,源日期):获取日期某部分的值,返回字符串
简写
{
year(源日期):年
month(源日期):月
day(源日期):日
}
}
类型转换函数
{
cast(expression as datatype)
convert(datatype, expression[, style])
}
}
编程基础
{
局部变量
{
声明:declare @XXX 类型, @XXX 类型
赋值
{
set 变量=值 (查询子句返回多值时报错)
或
select 变量=值 (查询子句返回多值时赋最后一个值)
}
不赋值时变量值为NULL
}
全局变量
{
声明:@@XXX
一般为系统变量 (系统变量不可更改)
}
case
{
写法一
{
case
when XXthen XX
when XXthen XX
else XX
end
}
写法二
{
case XX
when X then XX
when X then XX
else XX
end
此种写法只能判断等值
}
then后数据类型必须一致
一般用于选择性显示列值
}
while
{
declare @i int=1
while @i可编程性->存储过程
}
}
触发器(trigger)
{
语法
{
create trigger 触发器名 on 表名
after(for)/instead of [,delete][,update]
as
begin
XXX
end
触发器中可以使用rollback和commit
不能向触发器传递参数
不能手动调用触发器 (事件触发时由系统自动调用)
}
触发器种类
{
After触发器:语句执行完毕后触发
Instead of触发器:语句执行前进行替换操作
}
inserted和deleted表
{
inserted表:临时存放插入的数据
deleted表:临时存放删除的数据
更新操作:同时使用inserted表和deleted表
}
触发器是一种特殊的存储过程
一条SQL语句只触发一次语句级触发器
尽量避免使用触发器
尽量避免在触发器中进行复杂耗时的操作
}
页:
[1]