Sybase 函数

来源:互联网 发布:网络三剑客 编辑:程序博客网 时间:2024/06/04 19:56

最近工作涉及到数据库字符串的修改,网上找到一篇sybase的字符串修改的文章,很受用,不错不错。

长度和语法分析
datalength(char_expr)
    在char_expr中返回字符的长度值,忽略尾空
substring(expression,start,length)
    返回部分字符串
right(char_expr,int_expr)
    返回char_expr右边的int_expr字符
基本字符串运算
upper(char_expr)
    把char_expr转换成大写形式
lower(char_expr)
    把char_expr转换成小写形式
space(int_expr)
    生成有int_expr个空格的字符串
replicate(char_expr,int_expr)
    重复char_expr,int_expr次
stuff(expr1,start,length,expr2)
    用expr2代替epxr1中start起始长为length的字符串
reverse(char_expr)
    反写char_expr中的文本
ltrim(char_expr)
    删除头空
rtrim(char_expr)
    删除尾空
格式转换
ascii(char_expr)
    返回char_expr中第一个字符的ASCII值
char(int_expr)
    把ASCII码转换为字符
str(float_expr[,length[,decimal]])
    进行数值型到字符型转换
soundex(char_expr)
    返回char_expr的soundex值
difference(char_expr1,char_expr2)
    返回表达式soundex值之差
串内搜索
charindex(char_expr,expression)
    返回指定char_expr的开始位置,否则为0
patindex("%pattern%",expression)
    返回指定样式的开始位置,否则为0
  
datalength用于确定可变字符串的长度
soundex用于确定字符串是否发音相似
difference返回0-4之间的值,0表示最不相似,4表示最相似
通配符
    % 匹配任何数量的字符或无字符
    _ 匹配任何单个字符(空间占位符)
    [] 规定有效范围,或某个"OR"条件
      [ABG]   A,B,G
      [A-C]   A,B,C   
      [A-CE-G] A,B,C,E,F,G
      [^ABG]     除了A,B,G
      [^A-C]   除了A,B,C
  
escape子句
用某个转义字符可在搜索字符串时将通配符作为文字来包含。
ANSI-89 SQL标准定义了escape子句指定某个转义字符
缺省情况下,[]来转义某个通配符,例:
    select * from test_tab
      where description like "%20[%]%"
语法:
    like char_expression escape escape_character

    select * from test_tab
      where description like "%20#%%" escape "#"
+ 可用于串接字符
    select au_laname+","+au_fname from authors
  
数学函数
abs(numeric_expr)
     返回指定值的绝对值
ceiling(numeric_expr)
    返回大于或等于指定值的最小整数
exp(float_expr)
    给出指定值的指数值
floor(numeric_expr)
    返回小于或等于指定值的最大整数
pi()
    返回常数3.1415926
power(numeric_expr,power)
    返回numeric_expr的值给power的幂
rand([int_expr])
    返回0-1之间的随机浮点数,可指定基值
round(numeric_expr,int_expr)
    把数值表达式圆整到int_expr指定的精度
sign(int_expr)
    返回正+1,零0或负-1
sqrt(float_expr)
    返回指定值的平方根
SQL SERVER支持所有标准的三角函数和其他有用的函数
  
日期函数
getdate()
    返回当前的系统日期和时间
datename(datepart,date_expr)
    以字符串形式返回date_expr指定部分的值,转换成合适的名字
datepart(datepart,date_expr)
    作为整数返回date_expr值的指定部分
datediff(datepart,date_expr1,date_expr2)
    返回date_expr2-date_expr1,通过指定的datepart度量
dateadd(datepart,number,date_expr)
    返回日期,通过在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(1=sunday)
小时     hh   0-23
分钟     mi   0-59
秒     ss   0-59
毫秒     ms   0-999
例:
    select invoice_no,
      datediff(dd,date_shipped,getdate())
      from invoices
      where balance_due>0
  
转换函数convert
此函数把值从一种类型改变成另一种类型
    convert(datetype [(length)],expression)
    select "Advance="+convert(char(12),advance)
      from titles
日期转换
    convert(datetype[(length)],expression,format)
format指定将日期转换为什么格式,有以下值:
没有世纪   有世纪     转换字符串中日期格式
      0 or 100   mon dd yyy hh:miAM(or PM)
1     101     mm/dd/yy
2     102     yy.mm.dd
3     103     dd/mm/yy
4     104     dd.mm.yy
5     105     dd-mm-yy
6     106     dd mon yy
7     107     mon dd,yy
8     108     hh:mm:ss
      9 or 109   mon dd,yyyy hh:mi:ss:mmmAM(or PM)
10     110     mm-dd-yy
11     111     yy/mm/dd
12     112     yymmdd
  
系统函数
函数           定义
访问和安全性信息
host_id()           客户进程的当前主机进程ID号
host_name()         客户进程的当前主计算机名
suser_id(["login_name"])   用户的SQL Server ID号
suser_name([server_user_id])   用户的SQL Server登录名
user_id(["name_in_db"])     用户在数据库中的ID号
user_name([user_id])     用户在数据库中的名字
user             用户在数据库中的名字
show_role()         用户的当前活动角色
数据库和对象信息
db_id(["db_name"])     数据库ID号
db_name([db_id])       数据库名
object_id("objname")     数据库对象ID号
object_name(obj_id])     数据库对象号
col_name(obj_id,col_id)     对象的栏名
col_length("objname","colname")   栏的长度
index_col("objname",index_id,key#)   已索引的栏名
valid_name(char_expr)     若char_expr不是有效标识符,则返回0
数据函数
datalength(expression)     按字节返回expression的长度
tsequal(timestamp1,timestamp2)   比较时戳值,若时戳值不匹配,则返回出错消息
  
isnull()
isnull函数用指定的值代替查询栏或合计中的空值
例:
    select avg(isnull(total_order,$0))
      from invoices