SQLServer基本函数

时间:2022-12-05 08:56:31

1.字符串函数 
  长度与分析用

    datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格

    substring(expression,start,length) 取子串

    right(char_expr,int_expr) 返回字符串右边int_expr个字符

  字符操作类

    upper(char_expr) 转为大写

    lower(char_expr) 转为小写

    space(int_expr) 生成int_expr个空格

    replicate(char_expr,int_expr)复制字符串int_expr次

    reverse(char_expr) 反转字符串顺序

    stuff(char_expr1,start,length,char_expr2) 将字符串char_expr1中的从start开始的length个字符用char_expr2代替

    ltrim(char_expr)和rtrim(char_expr) 去掉空格

    ascii(char)和char(ascii) 两函数对应,取ascii码,根据ascii吗取字符

  字符串查找

    charindex(char_expr,expression) 返回char_expr的起始位置

    patindex("%pattern%",expression) 返回指定模式的起始位置,否则为0

2.数学函数

  abs(numeric_expr) 求绝对值

  ceiling(numeric_expr) 取大于等于指定值的最小整数

  exp(float_expr) 取指数

  floor(numeric_expr) 小于等于指定值得最大整数

  pi() 3.1415926.........

  power(numeric_expr,power) 返回power次方

  rand([int_expr]) 随机数产生器

  round(numeric_expr,int_expr) 安int_expr规定的精度四舍五入

  sign(int_expr) 根据正数,0,负数,,返回+1,0,-1

  sqrt(float_expr) 平方根

3.日期函数

  getdate() 返回日期

  datename(datepart,date_expr) 返回名称如 June

  datepart(datepart,date_expr) 取日期一部份

  datediff(datepart,date_expr1.dateexpr2) 日期差

  dateadd(datepart,number,date_expr) 返回日期加上 number

    上述函数中datepart的

    写法  取值    意义

    yy    1753-9999   年份

    qq    1-4      刻

    mm    1-12      月

    dy    1-366    日

    dd    1-31      日

    wk    1-54    周

    dw    1-7     周几

    hh   0-23    小时

    mi   0-59    分钟

    ss   0-59    秒

    ms   0-999    毫秒

  convert()  日期转换

4.系统函数

  suser_name() 用户登录名

  user_name() 用户在数据库中的名字

  user 用户在数据库中的名字

  show_role() 对当前用户起作用的规则

  db_name() 数据库名

  object_name(obj_id) 数据库对象名

  col_name(obj_id,col_id) 列名

  col_length(objname,colname) 列长度

  valid_name(char_expr) 是否是有效标识符

eg:

update kh_person set money=convert(float,(complete_value-
 (substring
(Assess_RESULT,
(patindex('%著作&%',Assess_RESULT)+3),
(patindex('%~获奖%',Assess_RESULT)-patindex('%著作&%',Assess_RESULT))-3))))*30+
convert(float,(substring
(Assess_RESULT,
(patindex('%著作&%',Assess_RESULT)+3),
(patindex('%~获奖%',Assess_RESULT)-patindex('%著作&%',Assess_RESULT))-3)))*15
where (patindex('%~获奖%',Assess_RESULT)-patindex('%著作&%',Assess_RESULT))>3;