官术网_书友最值得收藏!

4.3 常量

常量也稱為文字值或標量值,是表示一個特定數據值的符號。常量的格式取決于它所表示的值的數據類型。一個常量通常有一種數據類型和長度,這二者取決于常量格式。根據數據類型的不同,常量可以分為如下幾類:數字常量、字符串常量、日期和時間常量和符號常量。本節將介紹這些不同常量的表示方法。

4.3.1 數字常量

數字常量包括有符號和無符號的整數、定點數和浮點小數。

integer常量由沒有用引號括起來,并且不包含小數點的數字字符串來表示。integer常量必須全部為數字,它們不能包含小數。

decimal常量由沒有用引號括起來,并且包含小數點的數字字符串來表示。

float和real常量使用科學記數法來表示。

若要指示一個數是正數還是負數,對數值常量應用“+”或“-”一元運算符。這將創建一個表示有符號數字值的表達式。如果沒有應用+或-一元運算符,數值常量將使用正數。

money常量以前綴為可選的小數點和可選的貨幣符號的數字字符串來表示。money常量不使用引號括起來。

4.3.2 字符串常量

1.字符串常量

字符串常量括在單引號內并包含字母和數字字符(a~z、A~Z和0~9)以及特殊字符,如感嘆號(!)、at符(@)和數字號(#)。將為字符串常量分配當前數據庫的默認排序規則,除非使用COLLATE子句為其指定了排序規則。用戶輸入的字符串通過計算機的代碼頁計算,如有必要,將被轉換為數據庫的默認代碼頁。

2.Unicode字符串

Unicode字符串的格式與普通字符串相似,但它前面有一個N標識符(N代表SQL92標準中的區域語言)。N前綴必須是大寫字母。例如,'Michél'是字符串常量而N'Michél'則是Unicode常量。Unicode常量被解釋為Unicode數據,并且不使用代碼頁進行計算。Unicode常量有排序規則,該排序規則主要用于控制比較和如何區分大小寫。為Unicode常量分配當前數據庫的默認排序規則,除非使用COLLATE子句為其指定了排序規則。對于字符數據,存儲Unicode數據時每個字符使用2個字節,而不是每個字符1個字節。

4.3.3 日期和時間常量

日期和時間常量使用特定格式的字符日期值來表示,并用單引號括起來。

4.3.4 符號常量

1.分隔符

在T-SQL中,雙引號有兩層意思。除了引用字符串之外,雙引號還能夠用來做分隔符,也就是所謂的定界表示符(delimited identifier)。分割標識符是標識的一種特殊類型,通常將保留當作標識符并且用數據庫對象的名稱命名空間。

提示

單引號和雙引號之間的區別就在于前者適用于SQL92標準。標識符這種情況中,這種標準用于區分常規和分割標識符。關鍵的兩點就是分割標識符是用雙引號引出的,而且還區分大小寫(T-SQL還支持用方括號代替雙引號)。雙引號只用于分割字符串。一般來說,分割標識符說明了標識符的規格,對保留的也起到了同樣的作用。分割標識符還可以讓你不用名字(標識符、變量名),這些名字也可以在將來的SQL標準中用作保留的。并且,分割標識符還可能在標識符名中包含不合規定的字符,如空格。

在T-SQL中,雙引號是用來定義SET語句的QUOTED_IDENTIFIER選項的。如果這一選項設為ON(即默認值),那么雙引號中的標識符就被定義成了分割標識符。在這種情況下,雙引號就不能用于分割字符串。

技巧

說明一個T-SQL語句的注釋有兩種方法。一種方法是使用一對字符/**/,注釋就是對附著在里面的內容進行說明。這種情況下,注釋內容可能擴展成很多行。另一種方法是使用字符“--”(兩個連字符)表示當前行剩下的就是注釋(兩個連字符就符合ANSI SQL標準,而/和/是T-SQL的擴展名。

2.標識符

在T-SQL中,標識符用于識別數據庫對象如數據庫、表和索引。它們通過字符串表示出來,這些字符串的長度可以達到128個字符,還包含字母、數字或者下面的字符:“_”“@”“#”和“$”。每個名稱都必須以一個字母或者以下字符中的一個開頭:“_”“@”或“#”。“#”在以它開頭的表名或存儲程序名表示一個臨時對象,而以“@”開頭的標識符則表示一個變量。就像是之前提到的,這些規則并不適用于分割標識符(也叫作引用標識符),分割標識符可以將這些字符包含在內或者以其中的任意字符開頭(而不是分割符自己)。

主站蜘蛛池模板: 黑山县| 宝坻区| 本溪市| 上饶县| 峨眉山市| 凤台县| 保德县| 司法| 长沙市| 儋州市| 科技| 东兰县| 芦溪县| 车险| 定安县| 出国| 阳朔县| 临沂市| 齐齐哈尔市| 石柱| 禄丰县| 惠州市| 黎城县| 兴宁市| 布拖县| 屏边| 铁岭市| 互助| 金平| 灵武市| 健康| 西和县| 屏东县| 城固县| 盘山县| 井陉县| 印江| 太仆寺旗| 盐津县| 昭苏县| 巴青县|