购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 常量

常量也称为文字值或标量值,是表示一个特定数据值的符号。常量的格式取决于它所表示的值的数据类型。一个常量通常有一种数据类型和长度,二者取决于常量格式。根据数据类型的不同,常量可以分为如下几类:数字常量、字符串常量、日期和时间常量和符号常量。本节将介绍这些不同常量的表示方法。

3.2.1 数字常量

数字常量包括有符号和无符号的整数、定点数和浮点小数。

integer常量由没有用引号括起来并且不包含小数点的数字字符串来表示。integer常量必须全部为数字,它们不能包含小数。

     1894
     2

decimal常量由没有用引号括起来并且包含小数点的数字字符串来表示。

     1892.1204
     2.0

float和real常量使用科学记数法来表示。

     101.5E5
     0.5E-2

若要指示一个数是正数还是负数,对数值常量应用“+”或“-”一元运算符。这将创建一个表示有符号数字值的表达式。如果没有应用+或-一元运算符,数值常量将使用正数。

money常量以前缀为可选的小数点和可选的货币符号的数字字符串来表示。money常量不使用引号括起来。

     $12
     ¥542023.14

3.2.2 字符串常量

1. 字符串常量

字符串常量括在单引号内并包含字母和数字字符(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"
2. Unicode字符串

Unicode字符串的格式与普通字符串相似,但它前面有一个N标识符(N代表SQL92标准中的区域语言)。N前缀必须是大写字母。例如,'Michél'是字符串常量而N'Michél'则是Unicode常量。Unicode常量被解释为Unicode数据,并且不使用代码页进行计算。

Unicode常量有排序规则,主要用于控制比较和如何区分大小写。为Unicode常量分配当前数据库的默认排序规则,除非使用COLLATE子句为其指定了排序规则。对于字符数据,存储Unicode数据时每个字符使用2个字节,而不是每个字符1个字节。

3.2.3 日期和时间常量

日期和时间常量使用特定格式的字符日期值来表示,并用单引号括起来。

     'December 5, 1985'
     '5 December, 1985'
     '851205'
     '12/5/85'

3.2.4 符号常量

1. 分隔符

在T-SQL中,双引号有两层意思。除了引用字符串之外,双引号还能够用来做分隔符,也就是所谓的定界表示符(delimited identifier)。分隔标识符是标识的一种特殊类型,通常将保留当作标识符并且用数据库对象的名称命名空间。

提示

单引号和双引号之间的区别就在于前者适用于SQL92标准。标识符这种情况中,这种标准用于区分常规和分隔标识符。关键的两点就是分隔标识符是用双引号引出的,而且还区分大小写(T-SQL还支持用方括号代替双引号)。双引号只用于分割字符串。一般来说,分隔标识符说明了标识符的规格,对保留的也起到了同样的作用。分隔标识符还可以让你不用名字(标识符、变量名),这些名字也可以在将来的SQL标准中用作保留的。并且,分隔标识符还可能在标识符名中包含不合规定的字符,如空格。

在T-SQL中,双引号是用来定义SET语句QUOTED_IDENTIFIER选项的。如果这一选项设为ON(默认值),那么双引号中的标识符就被定义成了分隔标识符。在这种情况下,双引号就不能用于分割字符串。

技巧

说明一个T-SQL语句的注释有两种方法。一种方法是使用一对字符/**/,注释就是对附着在里面的内容进行说明。这种情况下,注释内容可能扩展成很多行。另一种方法是使用字符“--”(两个连字符)表示当前行剩下的就是注释。

2. 标识符

在T-SQL中,标识符用于识别数据库对象,如数据库、表和索引。它们通过字符串表示出来,这些字符串的长度可以达到128个字符,还包含字母、数字或者“_”“@”“#”和“$”。每个名称都必须以一个字母或者以下字符中的一个开头:“_”“@”或“#”。以“#”开头的表名或存储程序名表示一个临时对象,而以“@”开头的标识符则表示一个变量。就像之前提到的,这些规则并不适用于分隔标识符(也叫作引用标识符),分隔标识符可以将这些字符包含在内或者以其中的任意字符开头(而不是分隔符自己)。 g++4d7Fpk6v1uNY8G+y1Dz15pLj+6sQPGyGE3oDFS1ofj3LHGpCLgCZjU52vE9IP

点击中间区域
呼出菜单
上一章
目录
下一章
×