
datalength(char_expr)
在char_expr中返回字符的长度值,忽略尾空
char_length
返回表达式中字符的数量。对于可变长度的列和变量,它将返回字符的个数(包括尾部的空格);对于文字和固定长度的字符列和变量,就是声明的长度。所以一般我们要求字符串的长度,最后不要用这个。
len 返回指定字符串表达式(不包括尾随空白)的字符数(而不是字节数)
len(string_expression)
例如:select len(‘中国’) 结果:2
注意: char_length,char,len之间的区别
substring(expression,start,length)
返回部分字符串
str_replace 将第一个字符串表达式中出现的第二个字符串表达式的所有实例替换为第三个表达式。
例如:select str_replace(‘aaabbbccc’,’bb’,’mm’) 结果:aaammbccc
compare 直接比较两个字符串,如果不一样,则返回-1
right(char_expr,int_expr)
返回char_expr右边的int_expr字符
left(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的幂
square 返回表示为float的指定值的平方值。
Square(numeric)
例如:select square(price) from titles
Select square(5) 结果:25.0
注意:次函数等同于power(muneric_expr,2),但是它返回float类型而不返回int类型。
rand([int_expr])
返回0-1之间的随机浮点数,可指定基值
round(numeric_expr,int_expr)
把数值表达式圆整到int_expr指定的精度
sign(int_expr)
返回正+1,零0或负-1
sqrt(float_expr)
返回指定值的平方根
SQL SERVER 支持所有标准的三角函数和其他有用的函数
日期函数
getdate()
返回当前的系统日期和时间
current_date() 返回当前日期(不包括小时)
current_time() 返回当前时间
datename(datepart,date_expr)
以字符串形式返回date_expr指定部分的值,转换成合适的名字
eg:Select datename(month,getdate()) 结果November
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的日期部件而产生的
day 返回指定日期的datepart中表示天的整数
Select day(‘11/02/03’) 结果 2
month 返回一个整数,该整数表示月份。
例如:select month(getdate()) 结果:12
同理: select day(getdate()) 结果:15
select year(getdate()) 结果:2006
tips: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指定将日期转换为什么格式,有以下值:
没有世纪 有世纪 转换字符串中日期格式
tips: 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
col_length 返回已定义的列的长度。如:返回表tablename 的title列的长度,selectcol_length(‘tablename’,’title’)
注意:对text和image,numeric列比较特殊。
col_name 返回已指定表 ID 和列 ID 的列的名称,且最长可为 255 个字节。
语法 col_name(object_id, column_id [, database_id])
参数 object_id 是一个数值表达式,它是表、视图或其它数据库对象的对象 ID。它们 存储在 sysobjects 的 id 列中
column_id是一个数值表达式,它表示一列的列 ID。它们存储在 syscolumns 的colid 列中。
database_id是一个数值表达式,它表示数据库的 ID。它们存储在 sysdatabase 的db_id 列中。
curunreservedpas 返回指定磁盘区段中的可用页数
Curunreservedpgs(dbid,istart,unreservedpgs)
dbid是数据库的ID,它们存储在sysdatabases的dbid字段。
Istart是要返回的页所在磁盘区段中的一页。
Unreservedpgs是在dbtable当前对于所请求的数据库不可用时返回的缺省值。
eg: 返回数据库名称、设备名和每个设备区段中的未保留页数。
select db_name(dbid),d.name,curunreservedpgs(dbid,1,unreservedpgs)
from sysusages u ,sysdevices d where d.low<=u.size+vstart
and d.high>=u.size+vstart – 1
and d.status &2 = 2
db_id 返回数据库的ID号
Select db_id(‘pub’) 返回pub数据库的id
Select db_id() 当前数据库的ID
identity_burn_max 跟踪给定表的identity burn最大值,此函数只返还只而不进行更新。
例如:select identity_burn_max(‘tablename’)
注意:返回的是自增列的最大ID,如果这个表没有自增列,则返回为null
object_id 返回指定对象的对象ID,object_name是返回对象ID的对象名称。
Obeject_di(object_name)
object_name是数据库对象(表、视图、过程、触发器、缺省值或规则)的名称。
例如:select object_id(‘TBL_ZONE’) 结果:437573566
同样 selectobject_name(437573566) 结果:TBL_ZONE
注意:对象ID存储在sysobjects的ID列中。
index_col 返回指定表或视图中带索引的列的名称。
index_clolrder 返回列的顺序
is_sec_service_on 安全服务启用时返回1;否则返回0
is_sec_service_on(sevurity_service_nm)
其中:sevurity_service_nm是安全服务的名称。
查找安全服务的有效名称,用select * from syssecmechs
例如:select is_sec_service_on(“unifiedlogin”)
mut_excl_roles 返回有关两个角色之间互斥性的信息。
mut_excl_roles是一个系统函数。如果系统安全员将role1定义为与role2互斥的角色,或直接有role2所包含的角色,则mut_excl_roles返回1,如果不是则返回0。
newid 根据提供的参数生成两种不同格式的、人工可读的全局唯一ID
Newid([optionflag])
例如:select newid()
select newid(0)
select newid(0x0)
select newid(1)
可以通过newid()来参数随机器数
select id from tablename order by newid()
这时你会发现,每次执行,排序都不一样。
next_identity 检查下一个insert可用的下一个标识值。(就是下一个自增的ID)
Next_identity(tablename)
例如:select next_identity(‘tbl_zone’) 结果:返回tbl_zone表中下一个要自增的id
注意:如果这个表不是自增,则返回null
proc_role 返回关于是否已授予用户指定角色的信息。(通俗点就是你登陆后看看你是否有某些角色,有则返回1,否则返回0)
例如:检查用户是否已被授予系统安全员角色:
Select proc_role(‘sso_role’)
检查用户是否已被授予系统安全员角色:
Select proc_role(‘oper_role’)
role_contain 当role2包含role1是返回1
role_contain(‘role1’,’role2’)
role_id 返回已指定名称的角色的系统角色ID
role_name 返回已指定系统角色ID的角色名称
role_id(‘role_name’)
role_ name’(role_id)
例如:返还sa_role的系统角色ID
Select role_id(‘sa_role’) 结果:0
Select role_name(0) 结果:sa_role
show_role 显示登陆的当前启用的角色。
例如:select show_role()
show_sec_services 列出可供会话使用的安全服务。
例如:select show_sec_services()
注意:如果没有,则为null
suser_id 从syslogins表中返回服务器用户的ID号
suser_name 从syslogins表中返回服务器用户的名称
Suser_id([server_user_name])
例如:select suser_id()
或 selectsuser_id(‘lei’)
select suser_name()
或 select suser_name(4)
syb_quit 终止连接.
例如:终止在其中执行该函数且返回错误消息的连接.
Select syb_quit()
tempdb_id 报告给定会话分配到的临时数据库.
used_pgs 返回表或索引所用的页数.
user 返回当前用户的名称.
user_id 返回数据库中指定用户或当前用户的ID号
user_name 返回数据库中指定用户或当前用户的名称.
例如:select user_id()
或select user_id(‘lei’)
或select user_name()
或select user_name(4)
valid_name 如果指定字符串不是有效标识符,则返回0,否则返回非0数字
vaild_user 看是否是一个数据库中的有效用户或别名.