oracle中select的使用心得,总结Sybase IQ的使用心得

总结Sybase IQ的使用心得

==================================使用总结

===========================================

1、字母大小写比对不敏感,也就是在值比对判断时大小写字母都一样;

2、等值,或<>判断,系统默认对等式两边比对值去右边空格再进行比较;

3、GROUP BY 可以根据SELECT字段或表达式的别名来汇总,在编写时也尽量避免SELECT 语句的别名与FROM表中的字段有重复,不然会出现莫名其妙的错误;

4、FROM后的子查询要定义别名才可使用;

5、存储过程要返回IQ系统错误信息 SQLCODE || ERRORMSG(*) :(两者都为EXCEPTION后第一条SQL语句才有效果);

6、IQ中若采用 FULL JOIN 连接则不能使用 WHERE 条件,否则FULL JOIN将失效,要筛选条件则用子查询先过滤记录后再FULL JOIN;

7、建表时,字段默认为非空;

8、UPDATE语句,如果与目标表关联的表有多条,则不会报错,而是随机取一条更新(第一条);

9、RANK() OVER(PARTITION BY .. ORDER BY ..) 分组分析函数,相同的ORDER BY值,返回顺序值一样,且PARTITION BY 只支持一个字段或一个字段组(需多个字段分组的则要用 || 拼为一个字段(待确认,该问题以前碰过一次,再次验证却不存在这问题))

10、返回可读的全局唯一字符:UUIDTOSTR(NEWID())

11、存储过程隐式游标语法:

FOR A AS B CURSOR FOR SELECT ... FROM ...

DO

.... 过程语句

END FOR;

需要注意的时,这边的A 和 B 在过程语句中都不能引用,所以为避免过程语句其他字段名与FOR SELECT 语句的字段名称重复,FOR SELECT 语句的字段最好都定义别名区分

12、根据SELECT 语句建立[临时]表的方法(ORACLE的CREATE TABLE)

为 SELECT ..[*] INTO [#]table_name FROM ..;其中如果在table_name加前缀#,则为会话级临时表,否则为实体表;

13、因Sybase为列存储模式,在执行上INSERT语句会比UPDATE语句慢,尤其表数据越多INSERT效率就越慢;所以在ETL时建议多用UPDATE而不是INSERT

14、虽说Sybase为列存储模式,每个字段上都有默认索引,但对于经常的两表的关联键还是要建立索引否则会经常报QUERY_TEMP_SPACE_LIMIT不足的错误;

15、存储过程中也可以显示的执行DDL语句,这点与Oracle不同;

16、空字符串''在Sybase中也是个字符而不是null值,这点要注意;

17、调整SESSION的临时空间

SET TEMPORARY OPTION QUERY_TEMP_SPACE_LIMIT = '150000'; 15000为大小,如写0则没限制大小

==================================常用函数

===========================================

字符串函数

1)ISNULL(EXP1,EXP2,EXP3,...) :返回第一个非空值,用法与COALESCE(exp1,exp2[,exp3...])相同3)TRIM(exp) :去除两边空格

4)DATEFORMAT(date_exp,date_format) :日期型转字符型;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值