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

摘要:

名字:

下文通过举例的方式讲述sqlserver中位运算的相关知识,如下所示:
实验环境:sqlserver 2008 R2

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

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

 

  • 标准sql语言是不区分大小写的

在sqlserver的权限设置,我们通常使用1、2、4、8、16、32、64、128等数值分别表示相关信息的某一状态供业务状态使用,通过字段值之间的组合形成一个状态值存储到数据库中,
设置一个角色拥有的权限
例:
1:代表“查看”按钮权限
2:代表”修改”按钮
4:代表”导出”按钮
8:代表”删除”按钮

--例:
--权限表如下:
create table userRole(userId varchar(36),
roleInfo int);
go

insert into userRole(userId,roleInfo)values('test',1) ---初始化测试账号"test",拥有查看权限
insert into userRole(userId,roleInfo)values('猫猫',2) 
--当我们需要给用户加入修改"2"权限,则可以使用以下运算
update userRole set roleInfo =roleInfo|2 where userId ='test'


--当我们需要给用户加入导出"4"权限,则可以继续使用以下运算
update userRole set roleInfo =roleInfo|4 where userId ='test'


--当我们需要给用户删除导出"4"权限,则可以继续使用以下运算
--删除权限前需判断用户是否存在此权限,此脚本不可多次运行
--if exists (select null from userRole where roleInfo &4 =4 and userId ='test')
---begin
update userRole set roleInfo =roleInfo^4 where userId ='test' and roleInfo&4 =4 
--end
---我们检索所有拥有权限"修改2"的用户信息
select * from userRole where roleInfo &2 = 2

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

 

 

注意事项:

常量:

此处权限设置,主要使用二进制中每一位代表一个权限及位运算的特性进行权限的增减操作
由于”^异或运算”运算,左表达式1或0 时
右表达式为1时,将分别产生
0、1,所以剔除权限时,一定要判断是否存在此权限

www.463.com, 转自:http://www.maomao365.com/?p=7137

  • 字符串常量:使用单引号或双引号括起来的字符序列,推荐用单引号括起来;最大为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不支持该操作符

发表评论

电子邮件地址不会被公开。 必填项已用*标注