#双引号
双引号是对标识符、密码定义和使用的扩展。使用双引号时,标识符、密码定义将支持特殊字符、数字,并且区分字母大小写。
双引号的使用位置(是否可出现在SELECT,FROM和WHERE后)和使用场景规则,以及双引号内字符串的长度限制,由双引号限定的标识符和密码本身决定,与是否加双引号无关。
表名、列名、视图名、序列名、同义词、函数名、存储过程名、触发器名以及JOB名等对象名称标识符支持使用双引号。
表别名、列别名和视图别名标识符支持使用双引号。
用户密码支持除双引号外的任意字符,不支持转义双引号(例如"hhh^^\"hhh")。
YashanDB对双引号的实现规则如下:
- 双引号内字符串长度限制不允许超过64字节,否则报错。
- 双引号成对使用。从读取左引号开始会一直检索直到读取到右引号,且保留双引号包围的字符串不做处理;右引号缺失时报错。
- DDL语句会直接将双引号内的原始字符串(保留大小写)写入元数据中。
- DML语句会将按双引号内的原始字符串跟元数据字符串进行大小写敏感比较。
下表为标识符中是否使用了双引号的不同处理规则:
字符型 | 使用双引号 | 不使用双引号 |
---|---|---|
大小写 | 将双引号内原始字符串与元数据字符串进行大小写敏感比较 | 转为大写后,与元数据字符串进行大小写敏感比较 |
特殊字符 | 将双引号内原始字符串与元数据字符串对比 | 报错 |
数字 | 作为名称标识符处理 | 作为数字处理 |
标识符作为名称时的大小写规则以及支持的特殊字符请查阅标识符。