[code] 

长度和语法分析 

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 



[/code]