qq524061227 发表于 2018-10-19 11:31:30

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]
查看完整版本: SQL函数和可编程性