常量也称为文字值或标量值,是表示一个特定数据值的符号。常量的格式取决于它所表示的值的数据类型。一个常量通常有一种数据类型和长度,二者取决于常量格式。根据数据类型的不同,常量可以分为如下几类:数字常量、字符串常量、日期和时间常量和符号常量。本节将介绍这些不同常量的表示方法。
数字常量包括有符号和无符号的整数、定点数和浮点小数。
integer常量由没有用引号括起来并且不包含小数点的数字字符串来表示。integer常量必须全部为数字,它们不能包含小数。
1894 2
decimal常量由没有用引号括起来并且包含小数点的数字字符串来表示。
1892.1204 2.0
float和real常量使用科学记数法来表示。
101.5E5 0.5E-2
若要指示一个数是正数还是负数,对数值常量应用“+”或“-”一元运算符。这将创建一个表示有符号数字值的表达式。如果没有应用+或-一元运算符,数值常量将使用正数。
money常量以前缀为可选的小数点和可选的货币符号的数字字符串来表示。money常量不使用引号括起来。
$12 ¥542023.14
字符串常量括在单引号内并包含字母和数字字符(a~z、A~Z和0~9)以及特殊字符,如感叹号(!)、at符(@)和数字号(#)。将为字符串常量分配当前数据库的默认排序规则,除非使用COLLATE子句为其指定了排序规则。用户输入的字符串通过计算机的代码页计算,如有必要,将被转换为数据库的默认代码页。
'Cincinnati' 'O''Brien' 'Process X is 50% complete.' 'The level for job_id: %d should be between %d and %d.' "O'Brien"
Unicode字符串的格式与普通字符串相似,但它前面有一个N标识符(N代表SQL92标准中的区域语言)。N前缀必须是大写字母。例如,'Michél'是字符串常量而N'Michél'则是Unicode常量。Unicode常量被解释为Unicode数据,并且不使用代码页进行计算。
Unicode常量有排序规则,主要用于控制比较和如何区分大小写。为Unicode常量分配当前数据库的默认排序规则,除非使用COLLATE子句为其指定了排序规则。对于字符数据,存储Unicode数据时每个字符使用2个字节,而不是每个字符1个字节。
日期和时间常量使用特定格式的字符日期值来表示,并用单引号括起来。
'December 5, 1985' '5 December, 1985' '851205' '12/5/85'
在T-SQL中,双引号有两层意思。除了引用字符串之外,双引号还能够用来做分隔符,也就是所谓的定界表示符(delimited identifier)。分隔标识符是标识的一种特殊类型,通常将保留当作标识符并且用数据库对象的名称命名空间。
提示
单引号和双引号之间的区别就在于前者适用于SQL92标准。标识符这种情况中,这种标准用于区分常规和分隔标识符。关键的两点就是分隔标识符是用双引号引出的,而且还区分大小写(T-SQL还支持用方括号代替双引号)。双引号只用于分割字符串。一般来说,分隔标识符说明了标识符的规格,对保留的也起到了同样的作用。分隔标识符还可以让你不用名字(标识符、变量名),这些名字也可以在将来的SQL标准中用作保留的。并且,分隔标识符还可能在标识符名中包含不合规定的字符,如空格。
在T-SQL中,双引号是用来定义SET语句QUOTED_IDENTIFIER选项的。如果这一选项设为ON(默认值),那么双引号中的标识符就被定义成了分隔标识符。在这种情况下,双引号就不能用于分割字符串。
技巧
说明一个T-SQL语句的注释有两种方法。一种方法是使用一对字符/**/,注释就是对附着在里面的内容进行说明。这种情况下,注释内容可能扩展成很多行。另一种方法是使用字符“--”(两个连字符)表示当前行剩下的就是注释。
在T-SQL中,标识符用于识别数据库对象,如数据库、表和索引。它们通过字符串表示出来,这些字符串的长度可以达到128个字符,还包含字母、数字或者“_”“@”“#”和“$”。每个名称都必须以一个字母或者以下字符中的一个开头:“_”“@”或“#”。以“#”开头的表名或存储程序名表示一个临时对象,而以“@”开头的标识符则表示一个变量。就像之前提到的,这些规则并不适用于分隔标识符(也叫作引用标识符),分隔标识符可以将这些字符包含在内或者以其中的任意字符开头(而不是分隔符自己)。