Sybase 函数
Sybase字符串函?/span>
长度和语法分?span>
datalength(char_expr)
在char_expr中返回字W的长度|忽略
substring(expression,start,length)
q回部分字符?span>
right(char_expr,int_expr)
q回char_expr双的int_expr字符
基本字符串运?span>
upper(char_expr)
把char_expr转换成大写Ş?span>
lower(char_expr)
把char_expr转换成小写Ş?span>
space(int_expr)
生成有int_expr个空格的字符?span>
replicate(char_expr,int_expr)
重复char_expr,int_expr?span>
stuff(expr1,start,length,expr2)
用expr2代替epxr1中start起始长ؓlength的字W串
reverse(char_expr)
反写char_expr中的文本
ltrim(char_expr)
删除头空
rtrim(char_expr)
删除
格式转换
ascii(char_expr)
q回char_expr中第一个字W的ASCII?span>
char(int_expr)
把ASCII码{换ؓ字符
str(float_expr[,length[,decimal]])
q行数值型到字W型转换
soundex(char_expr)
q回char_expr的soundex?span>
difference(char_expr1,char_expr2)
q回表达式soundexg?span>
串内搜烦
charindex(char_expr,expression)
q回指定char_expr的开始位|?否则?span>0
patindex("%pattern%",expression)
q回指定样式的开始位|?否则?span>0
datalength用于定可变字符串的长度
soundex用于定字符串是否发音相?span>
differenceq回0-4之间的|0表示最不相|4表示最怼
通配W?span>
% 匚wM数量的字W或无字W?span>
_ 匚wM单个字符Q空间占位符Q?span>
[] 规定有效范围,或某?OR"条g
[ABG] A,B,G
[A-C] A,B,C
[A-CE-G] A,B,C,E,F,G
[^ABG] 除了A,B,G
[^A-C] 除了AQBQ?span>C
escape子句
用某个{义字W可在搜索字W串时将通配W作为文字来包含?span>
ANSI-89 SQL标准定义了escape子句指定某个转义字符
~省情况下,[]来{义某个通配W,例:
select * from test_tab
where description like "%20[%]%"
语法Q?span>
like char_expression escape escape_character
?span>
select * from test_tab
where description like "%20#%%" escape "#"
+ 可用于串接字W?span>
select au_laname+","+au_fname from authors
数学函数
abs(numeric_expr)
q回指定值的l对?span>
ceiling(numeric_expr)
q回大于或等于指定值的最整?span>
exp(float_expr)
l出指定值的指数?span>
floor(numeric_expr)
q回于或等于指定值的最大整?span>
pi()
q回常数3.1415926
power(numeric_expr,power)
q回numeric_expr的值给power的幂
rand([int_expr])
q回0-1之间的随机QҎQ可指定基?span>
round(numeric_expr,int_expr)
把数D辑ּ圆整到int_expr指定的精?span>
sign(int_expr)
q回?1Q零0或负-1
sqrt(float_expr)
q回指定值的qx?span>
SQL SERVER支持所有标准的三角函数和其他有用的函数
日期函数
getdate()
q回当前的系l日期和旉
datename(datepart,date_expr)
以字W串形式q回date_expr指定部分的?转换成合适的名字
datepart(datepart,date_expr)
作ؓ整数q回date_expr值的指定部分
datediff(datepart,date_expr1,date_expr2)
q回date_expr2-date_expr1,通过指定的datepart度量
dateadd(datepart,number,date_expr)
q回日期,通过在date_expr上增加指定number的日期部件而生的
datepart
日期部g ~写 D?span>
q?span> yy 1753-9999
季度 qq 1-4
?span> mm 1-12
每年中的?span> dy 1-366
?span> dd 1-31
星期 wk 1-54
星期?span> dw 1-7(1=sunday)
时 hh 0-23
分钟 mi 0-59
U?span> ss 0-59
毫秒 ms 0-999
例:
select invoice_no,
datediff(dd,date_shipped,getdate())
from invoices
where balance_due>0
转换函数convert
此函数把g一U类型改变成另一U类?span>
convert(datetype [(length)],expression)
select "Advance="+convert(char(12),advance)
from titles
日期转换
convert(datetype[(length)],expression,format)
format指定日期{换ؓ什么格式,有以下|
没有世纪 有世U?转换字符串中日期格式
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
pȝ函数
函数 定义
讉K和安全性信?span>
host_id() 客户q程的当前主EID?span>
host_name() 客户q程的当前主计算机名
suser_id(["login_name"]) 用户?span>SQL Server ID?span>
suser_name([server_user_id]) 用户的SQL Serverd?span>
user_id(["name_in_db"]) 用户在数据库中的ID?span>
user_name([user_id]) 用户在数据库中的名字
user 用户在数据库中的名字
show_role() 用户的当前活动角?
数据库和对象信息
db_id(["db_name"]) 数据库ID?span>
db_name([db_id]) 数据库名
object_id("objname") 数据库对象ID?span>
object_name(obj_id]) 数据库对象号
col_name(obj_id,col_id) 对象的栏?span>
col_length("objname","colname") 栏的长度
index_col("objname",index_id,key#) 已烦引的栏名
valid_name(char_expr) 若char_expr不是有效标识W,则返?
数据函数
datalength(expression) 按字节返回expression的长?span>
tsequal(timestamp1,timestamp2) 比较时戳|若时戛_g匚wQ则q回出错消息
isnull()
isnull函数用指定的g替查询栏或合计中的空?span>
例:
select avg(isnull(total_order,$0))
from invoices
日期函数
getdate()
得到当前旉,可以讄得到各种旉格式.
datepart(日期部分,日期)
取指定时间的某一个部?q月天时分秒.
datediff(日期部分,日期1,日期2)
计算指定的日?和日?的时间差多少.
dateadd(日期部分,数D辑ּ,日期)
计算指定旉,再加上表辑ּ指定的时间长?
--取时间的某一个部?/span>
select datepart(yy,getdate()) --year
select datepart(mm,getdate()) --month
select datepart(dd,getdate()) --day
select datepart(hh,getdate()) --hour
select datepart(mi,getdate()) --min
select datepart(ss,getdate()) --sec
--取星期几
set datefirst 1
select datepart(weekday,getdate()) --weekday
--字符串时?/span>
select getdate() -- '03/11/12'
select convert(char,getdate(),101) -- '09/27/2003'
select convert(char,getdate(),102) -- '2003.11.12'
select convert(char,getdate(),103) -- '27/09/2003'
select convert(char,getdate(),104) -- '27.09.2003'
select convert(char,getdate(),105) -- '27-09-2003'
select convert(char,getdate(),106) -- '27 Sep 2003'
select convert(char,getdate(),107) --'Sep 27, 2003'
select convert(char,getdate(),108) --'11:16:06'
select convert(char,getdate(),109) --'Sep 27 2003 11:16:28:746AM'
select convert(char,getdate(),110) --'09-27-2003'
select convert(char,getdate(),111) --'2003/09/27'
select convert(char,getdate(),112) --'20030927'
select rtrim(convert(char,getdate(),102))+' '+(convert(char,getdate(),108)) -- '2003.11.12 11:03:41'
--整数旉
select convert(int,convert(char(10),getdate(),112)) -- 20031112
select datepart(hh,getdate())*10000 + datepart(mi,getdate())*100 + datepart(ss,getdate()) -- 110646
--旉格式 "YYYY.MM.DD HH:MI:SS" 转换?span> "YYYYMMDDHHMISS"
declare @a datetime,@tmp varchar(20),@tmp1 varchar(20)
select @a=convert(datetime,'2004.08.03 12:12:12')
select @tmp=convert(char(10),@a,112)
select @tmp
select @tmp1=convert(char(10),datepart(hh,@a)*10000 + datepart(mi,@a)*100 + datepart(ss,@a))
select @tmp1
select @tmp=@tmp+@tmp1
select @tmp
--当月最后一?/span>
declare
@tmpstr varchar(10)
@mm int,
@premm int,
@curmmlastday varchar(10)
begin
select @mm=datepart(month,getdate())--当月
select @premm=datepart(month,dateadd(month,-1,getdate())) --上个?/span>
if (@mm>=1 and @mm<=8)
select @tmpstr=convert(char(4),datepart(year,getdate()))+'.0'+convert(char(1),datepart(month,dateadd(month,1,getdate())))+'.'+'01'
else if (@mm>=9 and @mm<=11)
select @tmpstr=convert(char(4),datepart(year,getdate()))+'.'+convert(char(2),datepart(month,dateadd(month,1,getdate())))+'.'+'01'
else
select @tmpstr=convert(char(4),datepart(year,dateadd(year,1,getdate())))+'.0'+convert(char(1),datepart(month,dateadd(month,1,getdate())))+'.'+'01'
select @curmmlastday=convert(char(10),dateadd(day,-1,@tmpstr),102) --当月最后一?/span>
end
源文?span> <http://hi.baidu.com/hwaspf/blog/item/a0ef87be66326e0d18d81f17.html>