SQL中的字符和标记
SQL语法最基本的元素是字符和标记。 标记是SQL语言的基本语法单元。
字符
SQL语言中关键词和操作符的基本符号是字符。 字符分为字母、数字或特殊字符。
- 字母是指英语字母表中26个大小写(A-Z和a-z)中的任何一个。1
- 数字是指0到9之间的任何一个字符。
- 特殊字符是指字母或数字以外的任何字符。
标记
SQL语言的基本语法单元称为标记。 一个标记由一个或多个字符组成,其中不含空格、控制字符、字符串常量或分隔标识符中的字符。
令牌分为普通令牌和分隔符令牌 :
- 普通标记是数字常量、普通标识符、主机标识符或关键字。 以下示例为普通令牌:
1 .1 +2 SELECT E 3 - 分隔符是字符串常量、带分隔符的标识符、运算符或语法图中显示的任何特殊字符。 如PREPARE语句中所述,当用作参数标记时,问号(
?)也是一个分隔符。 以下示例包括分隔符标记:, 'string' "fld1" = .
空格
空格是指一个或多个空字符的序列。
控制字符
控制字符是一种用于字符串对齐的特殊字符。 控制字符的作用类似于空间,不会导致特定操作的发生。 下表显示了 Db2 可识别的控制字符及其十六进制值。

| 控制字符 | EBCDIC十六进制值 | UTF-8 十六进制值 | UTF-16 十六进制值 |
|---|---|---|---|
| 制表符 | 05 | 09 | U+0009 |
| 换页 | 0C | 0C | U+000C |
| 回车 | 0D | 0D | U+000D |
| 新行 | 15 | C285 | U+0085 |
| 换行符 | 25 | 0A | U+000A |
| 双字节编码空间 | - | - | U+3000 |

除字符串常量和某些分隔标识符外,其他标记不得包含控制字符或空格。 控制字符或空格可以跟在标记之后。 每个普通标记后必须有一个分隔符、控制字符或空格。 如果语法不允许分隔符出现在普通字符之后,则必须在普通字符之后添加一个控制字符或空格。
三合字
语法中用左括号([ )和右括号(] )字符来指代数组元素。 某些CCSID无法指定这些字符。 以下三合字母可作为左右括号的替代符号:
- 字符串
??(可以代替左括号([)。 - 字符串
??)可以代替右括号(])。
注释
动态 SQL 语句可以包含 SQL 注释。 静态 SQL 语句可以包含主机语言注释或 SQL 注释。 除了在分隔符或关键字EXEC和SQL之间,可以在任何可以指定空格的地方指定注释。 在Java™中,嵌入式Java表达式中不允许使用SQL注释。 SQL注释有两种类型:
- 简单评论
- 简单评论以两个连续的连字符开头(
--)。简单评论不能超过行尾。 - 带括号的评论
- 带括号的评论以
/*开头,以*/结尾。 括号中的评论可以延续到行尾。
以下示例展示了如何在C程序中的SQL语句中加入注释。 示例中使用了简单注释和括号注释:
EXEC SQL
CREATE VIEW PRJ_MAXPER --projects with most support personnel
/*
* Returns number and name of the project
*/
AS SELECT PROJNO, PROJNAME -- number and name of project
FROM DSN8910.PROJ
/*
* E21 is the systems support dept code
*/
WHERE DEPTNO = 'E21' -- systems support dept code
AND PRSTAFF > 1;更多信息,请参阅 SQL注释。
大写和小写字母
SQL语句中的标记可以包含小写字母,但普通标记中的小写字母会被转换为大写。 然而,只有在指定了适当的预编译器选项时,小写字母才会以大写形式折叠到C或Java程序中。 分隔符永远不会变成大写。
例如,以下两个语句在文件夹之后是等价的:
select * from DSN8C10.EMP where lastname = 'Smith'; SELECT * FROM DSN8C10.EMP WHERE LASTNAME = 'Smith';1 字母还包括三个保留的代码点,作为国家语言的字母扩展(美国使用的$、#和@)。 应避免使用这三个代码点( X'5B',、 X'7B', 和 X'7C' ),因为它们根据CCSID的不同而代表不同的字符。