﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-XZC.Log-随笔分类-SybaseIQ</title><link>http://www.blogjava.net/xzclog/category/52003.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 21 Aug 2012 08:47:23 GMT</lastBuildDate><pubDate>Tue, 21 Aug 2012 08:47:23 GMT</pubDate><ttl>60</ttl><item><title>Sybase 函数</title><link>http://www.blogjava.net/xzclog/archive/2012/08/21/385918.html</link><dc:creator>xzc</dc:creator><author>xzc</author><pubDate>Tue, 21 Aug 2012 02:49:00 GMT</pubDate><guid>http://www.blogjava.net/xzclog/archive/2012/08/21/385918.html</guid><wfw:comment>http://www.blogjava.net/xzclog/comments/385918.html</wfw:comment><comments>http://www.blogjava.net/xzclog/archive/2012/08/21/385918.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xzclog/comments/commentRss/385918.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xzclog/services/trackbacks/385918.html</trackback:ping><description><![CDATA[<div><div><p>Sybase <span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">函数</span></p>  <p>&nbsp;</p>  <p><strong><span style="font-size:9.0pt; font-family:宋体;">Sybase</span></strong><strong><span style="font-size:9.0pt;font-family:宋体;">字符串函数</span></strong></p>  <p><span style="font-size:9.0pt">长度和语法分析<span> <br /> datalength(char_expr) <br /> </span>在char_expr中返回字符的长度值，忽略尾空<span> <br /> substring(expression,start,length) <br /> </span>返回部分字符串<span> <br /> right(char_expr,int_expr) <br /> </span>返回char_expr右边的int_expr字符<span> <br /> </span>基本字符串运算<span> <br /> upper(char_expr) <br /> </span>把char_expr转换成大写形式<span> <br /> lower(char_expr) <br /> </span>把char_expr转换成小写形式<span> <br /> space(int_expr) <br /> </span>生成有int_expr个空格的字符串<span> <br /> replicate(char_expr,int_expr) <br /> </span>重复char_expr,int_expr次<span> <br /> stuff(expr1,start,length,expr2) <br /> </span>用expr2代替epxr1中start起始长为length的字符串<span> <br /> reverse(char_expr) <br /> </span>反写char_expr中的文本<span> <br /> ltrim(char_expr) <br /> </span>删除头空<span> <br /> rtrim(char_expr) <br /> </span>删除尾空<span> <br /> </span>格式转换<span> <br /> ascii(char_expr) <br /> </span>返回char_expr中第一个字符的ASCII值<span> <br /> char(int_expr) <br /> </span>把ASCII码转换为字符<span> <br /> str(float_expr[,length[,decimal]]) <br /> </span>进行数值型到字符型转换<span> <br /> soundex(char_expr) <br /> </span>返回char_expr的soundex值<span> <br /> difference(char_expr1,char_expr2) <br /> </span>返回表达式soundex值之差<span> <br /> </span>串内搜索<span> <br /> charindex(char_expr,expression) <br /> </span>返回指定char_expr的开始位置,否则为<span>0 <br /> patindex("%pattern%",expression) <br /> </span>返回指定样式的开始位置,否则为<span>0 <br /> &nbsp;&nbsp;<br /> datalength</span>用于确定可变字符串的长度<span> <br /> soundex</span>用于确定字符串是否发音相似<span> <br /> difference</span>返回0-4之间的值，0表示最不相似，4表示最相似<span> <br /> </span>通配符<span> <br /> % </span>匹配任何数量的字符或无字符<span> <br /> _ </span>匹配任何单个字符（空间占位符）<span> <br /> [] </span>规定有效范围,或某个"OR"条件<span> <br /> &nbsp;&nbsp;&nbsp; [ABG]&nbsp;&nbsp; A,B,G <br /> &nbsp;&nbsp;&nbsp; [A-C]&nbsp;&nbsp; A,B,C <br /> &nbsp;&nbsp;&nbsp; [A-CE-G] A,B,C,E,F,G <br /> &nbsp;&nbsp;&nbsp; [^ABG] </span>除了<span>A,B,G <br /> &nbsp;&nbsp;&nbsp; [^A-C]&nbsp;&nbsp; </span>除了A，B，<span>C <br /> &nbsp;&nbsp;<br /> escape</span>子句<span> <br /> </span>用某个转义字符可在搜索字符串时将通配符作为文字来包含。<span> <br /> ANSI-89 SQL</span>标准定义了escape子句指定某个转义字符<span> <br /> </span>缺省情况下，[]来转义某个通配符，例：<span> <br /> select * from test_tab <br /> &nbsp;&nbsp;&nbsp; where description like "%20[%]%" <br /> </span>语法：<span> <br /> like char_expression escape escape_character <br /> </span>例<span> <br /> select * from test_tab <br /> &nbsp;&nbsp;&nbsp; where description like "%20#%%" escape "#" <br /> + </span>可用于串接字符<span> <br /> select au_laname+","+au_fname from authors <br /> &nbsp;&nbsp;<br /> </span><strong><span style="font-family:宋体;color:blue">数学函数 </span></strong><strong><span style="color:blue"><br /> </span></strong><span>abs(numeric_expr) <br /> </span>返回指定值的绝对值<span> <br /> ceiling(numeric_expr) <br /> </span>返回大于或等于指定值的最小整数<span> <br /> exp(float_expr) <br /> </span>给出指定值的指数值<span> <br /> floor(numeric_expr) <br /> </span>返回小于或等于指定值的最大整数<span> <br /> pi() <br /> </span>返回常数<span>3.1415926 <br /> power(numeric_expr,power) <br /> </span>返回numeric_expr的值给power的幂<span> <br /> rand([int_expr]) <br /> </span>返回0-1之间的随机浮点数，可指定基值<span> <br /> round(numeric_expr,int_expr) <br /> </span>把数值表达式圆整到int_expr指定的精度<span> <br /> sign(int_expr) <br /> </span>返回正+1，零0或负<span>-1 <br /> sqrt(float_expr) <br /> </span>返回指定值的平方根<span> <br /> SQL SERVER</span>支持所有标准的三角函数和其他有用的函数<span> <br /> &nbsp;&nbsp;<br /> </span><strong><span style="font-family:宋体;color:blue">日期函数</span></strong><span> <br /> getdate() <br /> </span>返回当前的系统日期和时间<span> <br /> datename(datepart,date_expr) <br /> </span>以字符串形式返回date_expr指定部分的值,转换成合适的名字<span> <br /> datepart(datepart,date_expr) <br /> </span>作为整数返回date_expr值的指定部分<span> <br /> datediff(datepart,date_expr1,date_expr2) <br /> </span>返回date_expr2-date_expr1,通过指定的datepart度量<span> <br /> dateadd(datepart,number,date_expr) <br /> </span>返回日期,通过在date_expr上增加指定number的日期部件而产生的<span> <br /> &nbsp;&nbsp;<br /> datepart <br /> </span>日期部件&nbsp;&nbsp; 缩写<span>&nbsp;&nbsp; </span>值范围<span> <br /> </span>年<span> yy&nbsp;&nbsp; 1753-9999 <br /> </span>季度<span> qq&nbsp;&nbsp; 1-4 <br /> </span>月<span> mm&nbsp;&nbsp; 1-12 <br /> </span>每年中的天<span>&nbsp;&nbsp; dy&nbsp;&nbsp; 1-366 <br /> </span>天<span> dd&nbsp;&nbsp; 1-31 <br /> </span>星期<span> wk&nbsp;&nbsp; 1-54 <br /> </span>星期天<span> dw&nbsp;&nbsp; 1-7(1=sunday) <br /> </span>小时<span> hh&nbsp;&nbsp; 0-23 <br /> </span>分钟<span> mi&nbsp;&nbsp; 0-59 <br /> </span>秒<span> ss&nbsp;&nbsp; 0-59 <br /> </span>毫秒<span> ms&nbsp;&nbsp; 0-999 <br /> </span>例：<span> <br /> select invoice_no, <br /> &nbsp;&nbsp;&nbsp; datediff(dd,date_shipped,getdate()) <br /> &nbsp;&nbsp;&nbsp; from invoices <br /> &nbsp;&nbsp;&nbsp; where balance_due&gt;0 <br /> &nbsp;&nbsp;<br /> </span>转换函数<span>convert <br /> </span>此函数把值从一种类型改变成另一种类型<span> <br /> convert(datetype [(length)],expression) <br /> select "Advance="+convert(char(12),advance) <br /> &nbsp;&nbsp;&nbsp; from titles <br /> <strong><span style="color:blue"><br /> </span></strong></span><strong><span style="font-family:宋体;color:blue">日期转换 </span></strong><strong><span style="color:blue"><br /> </span></strong><span>convert(datetype[(length)],expression,format) <br /> format</span>指定将日期转换为什么格式，有以下值：<span> <br /> </span>没有世纪&nbsp;&nbsp; 有世纪 转换字符串中日期格式<span> <br /> &nbsp;&nbsp;&nbsp; 0 or 100&nbsp;&nbsp; mon dd yyy hh:miAM(or PM) <br /> 1 101 mm/dd/yy <br /> 2 102 yy.mm.dd <br /> 3 103 dd/mm/yy <br /> 4 104 dd.mm.yy <br /> 5 105 dd-mm-yy <br /> 6 106 dd mon yy <br /> 7 107 mon dd,yy <br /> 8 108 hh:mm:ss <br /> &nbsp;&nbsp;&nbsp; 9 or 109&nbsp;&nbsp; mon dd,yyyy hh:mi:ss:mmmAM(or PM) <br /> 10 110 mm-dd-yy <br /> 11 111 yy/mm/dd <br /> 12 112 yymmdd <br /> &nbsp;&nbsp;<br /> </span><strong><span style="font-family:宋体;color:blue">系统函数</span></strong><span> <br /> </span>函数 &nbsp;&nbsp; &nbsp;&nbsp; 定义<span> <br /> </span>访问和安全性信息<span> <br /> host_id() &nbsp;&nbsp; &nbsp;&nbsp; </span>客户进程的当前主机进程ID号<span> <br /> host_name() &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span>客户进程的当前主计算机名<span> <br /> suser_id(["login_name"])&nbsp;&nbsp; </span>用户的<span>SQL Server ID</span>号<span> <br /> suser_name([server_user_id])&nbsp;&nbsp; </span>用户的SQL Server登录名<span> <br /> user_id(["name_in_db"]) </span>用户在数据库中的ID号<span> <br /> user_name([user_id]) </span>用户在数据库中的名字<span> <br /> user &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; </span>用户在数据库中的名字<span> <br /> show_role() &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span>用户的当前活动角色 </span></p>  <p><strong><span style="font-size:9.0pt;font-family:宋体;color:blue">数据库和对象信息 </span></strong><strong><span style="font-size: 9.0pt;color:blue"><br /> </span></strong><span style="font-size:9.0pt">db_id(["db_name"]) </span><span style="font-size:9.0pt">数据库ID号<span> <br /> db_name([db_id]) &nbsp;&nbsp; </span>数据库名<span> <br /> object_id("objname") </span>数据库对象ID号<span> <br /> object_name(obj_id]) </span>数据库对象号<span> <br /> col_name(obj_id,col_id) </span>对象的栏名<span> <br /> col_length("objname","colname")&nbsp;&nbsp; </span>栏的长度<span> <br /> index_col("objname",index_id,key#)&nbsp;&nbsp; </span>已索引的栏名<span> <br /> valid_name(char_expr) </span>若char_expr不是有效标识符，则返回0 </span></p>  <p><strong><span style="font-size:9.0pt;font-family:宋体;color:blue">数据函数 </span></strong><strong><span style="font-size:9.0pt; color:blue"><br /> </span></strong><span style="font-size:9.0pt">datalength(expression) </span><span style="font-size:9.0pt">按字节返回expression的长度<span> <br /> tsequal(timestamp1,timestamp2)&nbsp;&nbsp; </span>比较时戳值，若时戳值不匹配，则返回出错消息<span> <br /> &nbsp;&nbsp;<br /> isnull() <br /> isnull</span>函数用指定的值代替查询栏或合计中的空值<span> <br /> </span>例：<span> <br /> select avg(isnull(total_order,$0)) <br /> &nbsp;&nbsp;&nbsp; from invoices</span></span></p>  <p>&nbsp;</p></div></div><img src ="http://www.blogjava.net/xzclog/aggbug/385918.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xzclog/" target="_blank">xzc</a> 2012-08-21 10:49 <a href="http://www.blogjava.net/xzclog/archive/2012/08/21/385918.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sybase 日期函数</title><link>http://www.blogjava.net/xzclog/archive/2012/08/21/385919.html</link><dc:creator>xzc</dc:creator><author>xzc</author><pubDate>Tue, 21 Aug 2012 02:49:00 GMT</pubDate><guid>http://www.blogjava.net/xzclog/archive/2012/08/21/385919.html</guid><wfw:comment>http://www.blogjava.net/xzclog/comments/385919.html</wfw:comment><comments>http://www.blogjava.net/xzclog/archive/2012/08/21/385919.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xzclog/comments/commentRss/385919.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xzclog/services/trackbacks/385919.html</trackback:ping><description><![CDATA[<div><p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:10.0pt">日期函数</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">getdate()</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:10.0pt">得到当前时间,可以设置得到各种时间格式.</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">datepart(</span><span style="font-size:10.0pt">日期部分,日期)</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:10.0pt">取指定时间的某一个部分,年月天时分秒.</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">datediff(</span><span style="font-size:10.0pt">日期部分,日期1,日期2)</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:10.0pt">计算指定的日期1和日期2的时间差多少.</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">dateadd(</span><span style="font-size:10.0pt">日期部分,数值表达式,日期)</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:10.0pt">计算指定时间,再加上表达式指定的时间长度.</span></p>  <p style="margin:0cm;margin-bottom:.0001pt">&nbsp;</p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">--</span><span style="font-size:10.0pt">取时间的某一个部分</span></p>  <p style="margin:0cm;margin-bottom:.0001pt">&nbsp;</p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select datepart(yy,getdate()) --year</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select datepart(mm,getdate()) --month</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select datepart(dd,getdate()) --day</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select datepart(hh,getdate()) --hour</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select datepart(mi,getdate()) --min</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select datepart(ss,getdate()) --sec</span></p>  <p style="margin:0cm;margin-bottom:.0001pt">&nbsp;</p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">--</span><span style="font-size:10.0pt">取星期几</span></p>  <p style="margin:0cm;margin-bottom:.0001pt">&nbsp;</p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">set datefirst 1</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select datepart(weekday,getdate()) --weekday</span></p>  <p style="margin:0cm;margin-bottom:.0001pt">&nbsp;</p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">--</span><span style="font-size:10.0pt">字符串时间</span></p>  <p style="margin:0cm;margin-bottom:.0001pt">&nbsp;</p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select getdate() -- '03/11/12'</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select convert(char,getdate(),101) -- '09/27/2003'</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select convert(char,getdate(),102) -- '2003.11.12'</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select convert(char,getdate(),103) -- '27/09/2003'</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select convert(char,getdate(),104) -- '27.09.2003'</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select convert(char,getdate(),105) -- '27-09-2003'</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select convert(char,getdate(),106) -- '27 Sep 2003'</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select convert(char,getdate(),107) --'Sep 27, 2003'</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select convert(char,getdate(),108) --'11:16:06'</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select convert(char,getdate(),109) --'Sep 27 2003 11:16:28:746AM'</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select convert(char,getdate(),110) --'09-27-2003'</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select convert(char,getdate(),111) --'2003/09/27'</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select convert(char,getdate(),112) --'20030927'</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select rtrim(convert(char,getdate(),102))+' '+(convert(char,getdate(),108)) -- '2003.11.12 11:03:41'</span></p>  <p style="margin:0cm;margin-bottom:.0001pt">&nbsp;</p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">--</span><span style="font-size:10.0pt">整数时间</span></p>  <p style="margin:0cm;margin-bottom:.0001pt">&nbsp;</p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select convert(int,convert(char(10),getdate(),112)) -- 20031112</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select datepart(hh,getdate())*10000 + datepart(mi,getdate())*100 + datepart(ss,getdate()) -- 110646</span></p>  <p style="margin:0cm;margin-bottom:.0001pt">&nbsp;</p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">--</span><span style="font-size:10.0pt">时间格式<span> "YYYY.MM.DD HH:MI:SS" </span>转换为<span> "YYYYMMDDHHMISS"</span></span></p>  <p style="margin:0cm;margin-bottom:.0001pt">&nbsp;</p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">declare @a datetime,@tmp varchar(20),@tmp1 varchar(20)</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select @a=convert(datetime,'2004.08.03 12:12:12')</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select @tmp=convert(char(10),@a,112)</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select @tmp</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select @tmp1=convert(char(10),datepart(hh,@a)*10000 + datepart(mi,@a)*100 + datepart(ss,@a))</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select @tmp1</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select @tmp=@tmp+@tmp1</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select @tmp</span></p>  <p style="margin:0cm;margin-bottom:.0001pt">&nbsp;</p>  <p style="margin:0cm;margin-bottom:.0001pt">&nbsp;</p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">--</span><span style="font-size:10.0pt">当月最后一天</span></p>  <p style="margin:0cm;margin-bottom:.0001pt">&nbsp;</p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">declare</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">@tmpstr varchar(10)</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">@mm int,</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">@premm int,</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">@curmmlastday varchar(10)</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">begin</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select @mm=datepart(month,getdate())--</span><span style="font-size: 10.0pt">当月</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select @premm=datepart(month,dateadd(month,-1,getdate())) --</span><span style="font-size:10.0pt">上个月</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">if (@mm&gt;=1 and @mm&lt;=8)</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select @tmpstr=convert(char(4),datepart(year,getdate()))+'.0'+convert(char(1),datepart(month,dateadd(month,1,getdate())))+'.'+'01'</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">else if (@mm&gt;=9 and @mm&lt;=11)</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select @tmpstr=convert(char(4),datepart(year,getdate()))+'.'+convert(char(2),datepart(month,dateadd(month,1,getdate())))+'.'+'01'</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">else</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select @tmpstr=convert(char(4),datepart(year,dateadd(year,1,getdate())))+'.0'+convert(char(1),datepart(month,dateadd(month,1,getdate())))+'.'+'01'</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">select @curmmlastday=convert(char(10),dateadd(day,-1,@tmpstr),102) --</span><span style="font-size:10.0pt">当月最后一天</span></p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size: 10.0pt">end</span></p>  <p style="margin:0cm;margin-bottom:.0001pt">&nbsp;</p>  <p style="margin:0cm;margin-bottom:.0001pt"><span style="font-size:8.0pt; color:#666666">源文档<span> &lt;<a href="http://hi.baidu.com/hwaspf/blog/item/a0ef87be66326e0d18d81f17.html">http://hi.baidu.com/hwaspf/blog/item/a0ef87be66326e0d18d81f17.html</a>&gt; </span></span></p>  <p style="margin:0cm;margin-bottom:.0001pt">&nbsp;</p></div><img src ="http://www.blogjava.net/xzclog/aggbug/385919.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xzclog/" target="_blank">xzc</a> 2012-08-21 10:49 <a href="http://www.blogjava.net/xzclog/archive/2012/08/21/385919.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【昆明达内】Oralce与Sybase IQ差异比较及使用心得</title><link>http://www.blogjava.net/xzclog/archive/2012/06/18/380993.html</link><dc:creator>xzc</dc:creator><author>xzc</author><pubDate>Mon, 18 Jun 2012 02:57:00 GMT</pubDate><guid>http://www.blogjava.net/xzclog/archive/2012/06/18/380993.html</guid><wfw:comment>http://www.blogjava.net/xzclog/comments/380993.html</wfw:comment><comments>http://www.blogjava.net/xzclog/archive/2012/06/18/380993.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xzclog/comments/commentRss/380993.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xzclog/services/trackbacks/380993.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="color: #494949; font-family: 宋体, Arial, Helvetica, sans-serif; line-height: 25px; background-color: #ffffff; ">因为之前使用的是Oralce所以在摸索使用用Sybase很长一段时间后，总结了一下Sybase IQ的使用<br />　　<br />　　心得和大家分享，希望对大家会有帮助。<br />　　<br />　　1、字母大小写比对不敏感，也就是在值比对判断时大小写字母都一样;<br />　　2、等值，或&lt;&gt;判断，系统默认对等式两边比对值去右边空格再进行比较；<br />　　3、GROUP BY 可以根据SELECT字段或表达式的别名来 汇总，在编写时也尽量避免SELECT 语句的别<br />　　<br />　　名与FROM表中的字段有重复，不然会出现莫名其妙的错误；<br />　　4、FROM后的子查询 要定义别名才可使用；<br />　　5、存储过程要返回IQ系统错误信息 SQLCODE || ERRORMSG(*) ：(两者都为EXCEPTION后第一条SQL<br />　　<br />　　语句才有效果)；<br />　　6、IQ中若采用 FULL JOIN 连接则不能使用 WHERE 条件，否则FULL JOIN将失效，要筛选条件则用<br />　　<br />　　子查询先过滤记录后再FULL JOIN；<br />　　7、建表时，字段默认为非空；<br />　　8、UPDATE语句，如果与目标表关联的表有多条，则不会报错，而是随机取一条更新（第一条）；<br />　　9、RANK() OVER(PARTITION BY .. ORDER BY ..) 分组分析函数，相同的ORDER BY值，返回顺序值<br />　　<br />　　一样，且PARTITION BY 只支持一个字段或一个字段组（需多个字段分组的则要用 || 拼为一个字<br />　　<br />　　段（待确认，该问题以前碰过一次，再次验证却不存在这问题））<br />　　10、返回可读的 全局唯一字符：UUIDTOSTR(NEWID())<br />　　11、存储过程隐式游标语法：<br />　　FOR A AS B CURSOR FOR SELECT ... FROM ...&nbsp;<br />　　DO<br />　　.... 过程语句<br />　　END FOR;<br />　　需要注意的时，这边的A 和 B 在 过程语句中都不能引用，所以为避免过程语句其他字段名与FOR&nbsp;<br />　　<br />　　SELECT 语句的字段名称重复，FOR SELECT 语句的字段最好都定义别名区分<br />　　12、根据SELECT 语句建立[临时]表的方法（ORACLE的CREATE TABLE）为 SELECT ..[*] INTO [#]<br />　　<br />　　table_name FROM ..； 其中如果在table_name加前缀#，则为会话级临时表，否则为实体表；<br />　　13、因Sybase为列存储模式，在执行上INSERT语句会比UPDATE语句慢，尤其表数据越多INSERT效率<br />　　<br />　　就越慢；所以在ETL时建议多用UPDATE而不是INSERT<br />　　14、虽说Sybase为列存储模式，每个字段上都有默认索引，但对于经常的两表的关联键还是要建立<br />　　<br />　　索引否则会经常报QUERY_TEMP_SPACE_LIMIT不足的错误；<br />　　15、存储过程中也可以显示的执行DDL语句，这点与Oracle不同；<br />　　16、空字符串''在Sybase中也是个字符而不是null值，这点要注意；<br />　　17、调整SESSION的临时空间SET TEMPORARY OPTION QUERY_TEMP_SPACE_LIMIT = '150000'; 15000<br />　　<br />　　为大小，如写0则没限制大小<br />　　==================================常用函数===========================================<br />　　字符串函数<br />　　1）ISNULL(EXP1,EXP2,EXP3,...) :返回第一个非空值，用法与COALESCE(exp1,exp2[,exp3...])相<br />　　<br />　　同<br />　　3）TRIM(exp) ：去除两边空格<br />　　4）DATEFORMAT(date_exp,date_format) ：日期型转字符型；<br />　　5）STRING(exp)：转为字符型；<br />　　6）SUBSTRING(exp,int-exp1,[int-exp2])：截取exp从int-exp1开始，截取int-exp2个字符；<br />　　7）REPLACE(o-exp,search-exp,replace-exp):从o-exp搜索search-exp,替换为replace-exp;<br />　　8）SPACE(int_exp)：返回int个空格；<br />　　8）UPPER(exp):转为大写字母，等价于UCASE(exp);<br />　　8）LOWER(exp):转为小写字母，<br />　　8）CHARINDEX(exp1,exp2):返回exp2字符串中exp1的位置！定位，exp1 查找的字符，exp2 被查找<br />　　<br />　　的字符串;<br />　　8）DATALENGTH(CHAR_EXPR):在char_expr中返回字符的长度值，忽略尾空;<br />　　8）RIGHT(char_expr,int_expr):返回char_expr右边的int_expr个字符;<br />　　8）LEFT(char_expr,int_expr):返回char_expr左边的int_expr个字符;<br />　　8）REPLICATE(char_expr,int_expr):重复char_expr,int_expr次;<br />　　8）STUFF(expr1,start,length,expr2):用expr2代替epxr1中start起始长为length的字符串;<br />　　8）REVERSE(char_expr):反写char_expr中的文本;<br />　　8）LTRIM(char_expr):删除头空;<br />　　8）RTRIM(char_expr):删除尾空;<br />　　8）STR(float_expr[,length[,decimal]]):进行数值型到字符型转换;<br />　　8）PATINDEX("%pattern%",expression):返回指定样式的开始位置,否则为0;<br />　　8）NULLIF(exp1,exp1):比较两个表达式，如果相等则返回null值，否则返回exp1<br />　　8）NUMBER(*):返回序号，相当于ORACLE的rowid，但有区别；<br />　　其他函数<br />　　8）RANK() OVER(PARTITION BY .. ORDER BY ..) 分组分析函数，相同的ORDER BY值，返回顺序值<br />　　<br />　　一样，且PARTITION BY 只支持一个字段或一个字段组（需多个字段分组的则要用 || 拼为一个字<br />　　<br />　　段（待确认））<br />　　8）返回可读的 全局ID UUIDTOSTR(NEWID())<br />　　8）COL_LENGTH(tab_name,col_name):返回定义的列长度；兼容性：IQ&amp;ASE<br />　　8）LENGTH(exp)：返回exp的长度；兼容性：IQ<br />　　转换函数<br />　　8）CONVERT(datetype,exp[,format-style]):字符转日期型 或DATE(exp);兼容性：IQ&amp;ASE<br />　　format-style值 输出：<br />　　112 yyyymmdd<br />　　120 yyyy-mm-dd hh:nn:ss<br />　　SELECT CONVERT(date,'20101231',112),CONVERT(varchar(10),getdate(),120) ;&nbsp;<br />　　--结果&nbsp;<br />　　 2010-12-31 2011-04-07<br />　　8）CAST(exp AS data-type):返回转换为提供的数据类型的表达式的值； 兼容性：IQ<br />　　日期函数<br />　　8）DAY(date_exp):返回日期天值，DAYS(date_exp,int):返回日期date_exp加int后的日期；MONTH<br />　　<br />　　与MONTHS、YEAR与YEARS同理；<br />　　8）DATE(exp):将表达式转换为日期，并删除任何小时、分钟或秒；兼容性：IQ<br />　　8）DATEPART(date-part,date-exp): 返回日期分量的对应值(整数)；<br />　　8）GETDATE():返回系统时间；<br />　　8）DATENAME(datepart,date_expr):以字符串形式返回date_expr指定部分的值,转换成合适的名字<br />　　<br />　　;<br />　　8）DATEDIFF(datepart,date_expr1,date_expr2):返回date_expr2-date_expr1,通过指定的<br />　　<br />　　datepart度量;<br />　　8）DATEADD（date-part,num-exp,date-exp）:返回按指定date-part分量加num-exp值后生成的<br />　　<br />　　date-exp值；兼容性：IQ&amp;ASE<br />　　date-part日期分量代表值：<br />　　缩写 值<br />　　YY 0001-9999<br />　　QQ 1-4<br />　　MM 1-12<br />　　WK 1-54<br />　　DD 1-31<br />　　DY 1--366<br />　　DW 1-7(周日-周六)<br />　　HH 0-23<br />　　MI 0-59<br />　　SS 0-59<br />　　MS 0-999<br />　　数值函数<br />　　8）CEIL(num-exp)：返回大于或等于指定表达式的最小整数；兼容性：IQ&amp;ASE；<br />　　8）FLOOR(numeric_expr):返回小于或等于指定值的最大整数；<br />　　8）ABS(num-exp):返回数值表达式的绝对值；兼容性：IQ&amp;ASE；<br />　　8）TRUNCNUM(1231.1251,2)：截取数值；不四舍五入；<br />　　8）ROUND(numeric_expr,int_expr)：把数值表达式圆整到int_expr指定的精度；<br />　　8）RAND([int_expr])：返回0-1之间的随机浮点数，可指定基值；<br />　　8）SIGN(int_expr)：返回正+1，零0或负-1；<br />　　8）SQRT(float_expr)：返回指定值的平方根；&nbsp;<br />　　8）PI()：返回常数3.1415926；<br />　　8）POWER(numeric_expr,power)：返回numeric_expr的值给power的幂；<br />　　8）EXP(float_expr)：给出指定值的指数值；<br />　　<br />　　==================================常用DDL语句<br />　　<br />　　===========================================<br />　　Sybase中DDL语句不能修改字段的数据类型，只能修改空与非空：<br />　　1.删除列：<br />　　ALTER TABLE table_name DELETE column_name;<br />　　2.增加列：<br />　　ALTER TABLE table_name ADD (column_name DATA_TYPE [NOT] NULL);<br />　　3.修改列的空与非空：<br />　　ALTER TABLE table_name MODIFY column_name [NOT] NULL;<br />　　4.修改列名：<br />　　ALTER TABLE table_name RENAME old_column_name TO new_column_name;<br />　　5.快速建立临时表：<br />　　SELECT * INTO [#]table_name FROM .....;<br />　　6、修改表名：<br />　　ALTER TABLE old_table_name RENAME new_table_name<br />　　7.增加主键约束：<br />　　ALTER TABLE tb_name ADD CONSTRAINT pk_name PRIMARY KEY(col_name,..)<br />　　8.删除主键约束：<br />　　ALTER TABLE tb_name DROP CONSTRAINT pk_name;<br />　　9.建立自增长字段，与Oracle的SEQUENCE类似：<br />　　CREATE TABLE TMP_001 (RES_ID INTEGER IDENTITY NOT NULL);<br />　　10.添加表注释：<br />　　COMMENT ON TABLE table_name IS '....';<br />　　11.创建索引：<br />　　CREATE INDEX index_name ON table_name(column_name);</span><img src ="http://www.blogjava.net/xzclog/aggbug/380993.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xzclog/" target="_blank">xzc</a> 2012-06-18 10:57 <a href="http://www.blogjava.net/xzclog/archive/2012/06/18/380993.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>