标签存档: Sql

Sybase SQL中where子句与group by连用时的困惑

sybase where group by在SQL中,对于select语句里的where子句和group by子句的连用,一般原则应该是先执行where条件过滤,再用group by子句的条件来分组。然而Sybase却有所不同,比如select * from test1 where aa=’1′ group by bb,这是一条简单的分组语句,执行的结果却让人大跌眼镜。好象是where条件根本没有生效一样。查了Sybase文档,才明白问题之所在。现将该节翻译如下:

继续阅读 »

Sybase中判断一个串是否为纯数字

sybase isnumeric在为数据库开发存储过程时,经常需要判断一个字符串是不是纯数字,这样才能安全的进行数据类型转换。但是作为老牌数据库厂商的Sybase,却没有一个直观方便的函数来实现对应功能。而微软的Sql Server和Oracle,都提供有isnumeric等函数。曾经拥有过PowerBuilder、PowerDesigner等著名产品的Sybase,终于沦落成SAP的子公司,是不是也跟它这种傲娇的态度有关系呢?

继续阅读 »

Sybase指定字段别名的三种格式

sybase 别名sql语句中对数据库中的表和字段均可指定别名,适当的使用字段别名,可以使sql语句更简明易读,比如为计算列指定有意义的别名。也可以避免复杂的多表查询中出现相同名称的列时发生的冲突。还可以用在查询结果列名需要本地化的场合。这里不讨论表的别名,我们看下Sybase的sql语句中指定字段别名的三种方式,有兴趣的话还可以跟微软的MS sqlserver中的别名用法做一些有趣的对比。

继续阅读 »

sql中函数floor/ceiling/round区别

sql floor round数据库的Sql语言中有多个四舍五入或取整函数。尤其在证券金融等领域,选择正确的函数非常重要。在计算费用或利息等复杂公式里,由于计算机数值精度的客观存在,先乘后除还是先除后乘,以及四舍五入及取整函数的使用时机等,都会对最终的结果产生影响。因此在涉及资金计算的地方不但要搞清每种数据库产品Sql函数的细微差异,而且对计算方法也要有所规范。以下是一些常用的Sql四舍五入及取整函数。

继续阅读 »

sql中的语句连写

sql 连写多数编程语言中,语句末尾都要有结束符或回车换行等以作区分,但Sql却没有这种要求。 select ‘1111’ select ‘2222’ 上面这句,写在同一行里,若直接执行,会显示两条select语句的输出结果。与分行书写后一起执行的结果是一样的。 同样比如要kill掉某数据库进程: kill 123 kill 456 kill 7789 执行此一条语句,会分别kill掉三个进程。是否所有厂商的Sql实现都是如此?以后留心吧。

Sql中的延时语句

sql  延时  waitforSql语言中也有其它编程语言中的延时语句。主要延时方式有延时执行与定时执行两种。虽然由于数据库语言的特点,延时的精确度可能没那么高,延时长度也限定在24小时以内,并且数据库事务的运行可能会对延时功能造成影响,但在缺少权限时,延时语句至少为定时执行的Job提供了一种替代方案。不同的厂商的Sql实现可能略有不同,基本的延时语句语法及例子如下所示:

继续阅读 »

Sybase中like的语法

sql likeSql like运算符后面的表达式里,常用通配符的也就是%和_,但早上看段代码,有用like “[0-9][0-9]”的方式来验证是否两位数字,颇有点正则表达式的味道。查看like的用法,有如下几种:1 % 替代一个或多个字符。2 _ 仅替代一个字符。3 [charlist] 字符列中的任何单一字符。4 [^charlist] 或者 [!charlist] 不在字符列中的任何单一字符。虽然以上规则还不是完整的正则表达式,但已经能实现不少功能了。

SQL的join执行时,如何先where 后on

sql  joinSQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。常用的Join操作有:内联接、外联接和交叉联接等。如果我们想在两个或以上的表获取其中从一个表中的行与另一个表中的行匹配的数据,这时我们应该考虑使用Join,因为Join操作具有联接表或函数进行查询的特性。多种sql实现,包括oracle和ms sql server都证明了其执行次序是先on后where,即一个带外连接的语句:

继续阅读 »

Oracle 的各种join及where的执行次序

sql joinSql的join语句是根据字段间的关系,组合两个或以上表的语法。在ANSI标准中Join有四种,内联接,外联接,左联接与右联接。特殊的情况下,一个表甚至可以连接到自己。四种联接类型中的后三种其实都属于外联接。内联接是求两个表的交集,全外联接是两个表的并集,左外联接产生左表的完全集,而右表中匹配的则有值,没有匹配的则以null值取代。右外联接同样道理。十字联接则是笛卡尔积。

继续阅读 »

Oracle的sequence及left join等

oracle sequence joinOracle里有sequence对象,实际上是系统提供的一个自增值列。这个值增长到指定的大小后会重头开始。通常用在生成数据库数据记录的增长主键或序号的地方。Sequence是数据库系统的特性而非标准,有的数据库有Sequence,比如Oracle、DB2、PostgreSQL,有些则没有,比如MySQL、SQL Server、Sybase等数据库。Sybase中有一个identity列可以完成相似功能,但处理起来相对麻烦一些,因其并不是数据类型。

继续阅读 »

第 1 页,共 2 页12