Sybase:基本语言元素(对比sqlserver)


名字:

  • 关键字:词法分析的一种作为常量的字符串名,主要是为了词法分析用。
  • 标识符:词法分析的一种作为变量的字符串名,标识对象的名称
  • 保留字;词法分析中不可作为标识符的字符串名,主要是为了兼容和扩展的目的。

通常,如果关键字可以通过双引号("")引用而作为标识符,那它被称为保留字;如果不需要双引号引用就可以作为标识符使用,那它就不是保留字。

  • 标准sql语言是不区分大小写的
  • sybase的标识符规则和sqlserver基本完全一样:最大长度是128个字符,不区分大小写,可以使用双引号或方括号括起来。标识符符合一般的规则时,不需要括起来:首字符是字母(字母表中的字母、下划线、@、#、$),其他部分是字母、数字、_、@、#、$;但是绝对不能使用下列字符:双引号、小于0x20的字符(控制字符)、双反斜线;其他情况下,则必须使用方括号或双引号括起来:首字母不是字母,包含空格,为保留字,包含字母表以外的其他字符
  • sqlbase的标识符规则和sqlserver不一样的地方在于:sqlserver不允许$作为常规标识符的第一个字母;@@开头的标识符代表全局变量;##开头的标识符代表全局临时表

常量:

  • 字符串常量:使用单引号或双引号括起来的字符序列,推荐用单引号括起来;最大为2G个字符;具有字节和字符两种长度计量标准,对于单字节字符串字符长度等于字节长度,对于多字节字符串字符长度小于字节长度;
  • Nchar字符串常量:当然你可以使用“N'字符串'”来指导nchar字符串,如此对于通常的英文字符串字符长度总等于字节长度,而合字符集的无关。
  • 二进制或十六进制字符串常量:以“0x”开头(不知道是否区分大小写?待验证?),偶数个[0-9a-f]字符组成的不带引号的字符串序列。

以上sybase和sqlserver是完全相同的!!


和sqlserver不同:sysbase支持4类的字符串中的转义序列:两个当引号转义为一个单引号字符;“\x”开头后接十六进制数可以转义任何字符;“\n”转义换行符;“\\”转义一个反斜线字符。而sqlserver仅仅支持:两个当引号转义为一个单引号字符

运算符:

  • 比较运算符:大小写区分问题,尾随空白处理问题
  • 逻辑运算符:sqlserver支持的运算符比sybase多很多如:some、any、all、in、between、exists、like、in,但是不支持is;sysbase只支持:and 、or 、not、is
  • 位运算符:
  • 字符串连接运算符:sysbase除了支持 “+”外,还支持 sql2003标准的“||”;sqlserver不支持该操作符

基本上,可以认为sysbase的运算符是sqlserver运算符的子集

表达式:可以通过计算返回值的语句。
sybase的表达式非常丰富,较sqlserver有很多的增强,可以是:

  • sybase   表达式:常量、列名、函数、    变量、    一元运算、两元运算、组合运算、仅仅返回一个标量值的子查询、case表达式、if表达式、特殊值(类似于sqlserver的全局系统变量或系统函数)
  • sqlserver表达式:常量、列名、标量函数、本地变量、一元运算、两元运算、组合运算、仅仅返回一个标量值的子查询、case表达式、is [not] null表达式

搜索条件:

  • sybase中只能用于where、having、check、on短语、if表达式中的,类似于sqlserver的其他逻辑操作符和比较操作符,有:二元比较运算、{any|some|all}(多行子查询) 、between、like ? escape ?、in、exists、not、and、or、is [NOT] {NULL|TRUE|FALSE|UNKNOWN}、显示选择性估计
  • sybase基本上这些搜索条件运算和sqlserver中相同;不同处:like 运算支持escape是sybase的特性;增强了is 测试的能力

特殊值:sysbase的特殊值和sqlserver的全局变量或会话变量或系统函数类似

变量:

  • sysbase具有三个级别的变量:本地、连接会话、全局;而sqlserver有两个级别的变量:本地、全局
  • sysbase生命局部变量declare只能声明1个;而sqlserver则可以declare声明多个
  • sysbase的变量可以通过set和select into设置;而sqlserver可以通过set 和 select = 设置

sybase很多的全局变量是为了兼容t-sql而设置的,且很多特殊变量类似于全局变量,或者可以理解为全局变量的别名

注释:

  • sysbase支持四种注释符风格:--、/* */ 、//、%(必须经过设置)
  • sqlserver支持两种注释风格:--、/* */


null值问题:

原文地址:https://www.cnblogs.com/jinzhenshui/p/1743705.html