常數 (Transact-SQL)

常數也稱為常值或純量值,是一個代表特定資料值的符號。常數的格式會隨著所代表之值的資料類型而不同。

  • 字元字串常數
    字元字串常數含括在單引號中,其中包括英數字元 (a-z、A-Z 和 0-9) 以及特殊字元,如驚歎號 (!)、@ 記號 (@) 和數字符號 (#)。除非利用 COLLATE 子句來指定定序,否則,字元字串常值會被指派目前資料庫的預設定序。使用者所輸入的字元字串是透過電腦的字碼頁來評估的,必要的話,它們會轉換成資料庫預設字碼頁。

    如果連接的 QUOTED_IDENTIFIER 選項已設為 OFF,就可以將字元字串括在雙引號內,但 Microsoft SQL Server Native Client 提供者和 ODBC 驅動程式會自動使用 SET QUOTED_IDENTIFIER ON。我們建議您使用單引號。

    如果括在單引號中的字元字串包含內嵌雙引號,請用兩個單引號來表示內嵌的單引號。內嵌在雙引號內的字串,不需要如此。

    以下是字元字串的範例:

    'Cincinnati'
    'O''Brien'
    'Process X is 50% complete.'
    'The level for job_id: %d should be between %d and %d.'
    "O'Brien"
    

    空字串用不含任何東西的兩個單引號來表示。在 6.x 相容性模式中,用單一空格來表示空字串。

    字元字串常數支援增強型定序。

    [!附註]

    大於 8000 位元組的字元常數會輸入成 varchar(max) 資料。

  • Unicode 字串
    Unicode 字串的格式類似於字元字串,但前面附加了 N 識別碼 (N 代表 SQL-92 標準中的國家 (地區) 語言)。N 前置詞必須是大寫。例如,'Michél' 是一個字元常數,N'Michél' 則是 Unicode 常數。Unicode 常數會解譯成 Unicode 資料,並不會用字碼頁來評估。Unicode 常數有定序。這個定序主要用來控制比較和區分大小寫。除非利用 COLLATE 子句來指定定序,否則,Unicode 常數會被指派目前資料庫的預設定序。Unicode 資料是利用每個字元 2 位元組來儲存的,而不是字元資料的每個字元 1 個位元組。如需詳細資訊,請參閱<使用 Unicode 資料>。

    Unicode 字串常數支援增強型定序。

    [!附註]

    大於 8000 位元組的 Unicode 常數會輸入成 nvarchar(max) 資料。

  • 二進位常數
    二進位常數的前置詞是 0x,它是一個十六進位數字字串。它們不需加上引號。

    以下是二進位字串的範例:

    0xAE
    0x12Ef
    0x69048AEFDD010E
    0x  (empty binary string)
    

    [!附註]

    大於 8000 位元組的二進位常數會輸入成 varbinary(max) 資料。

  • bit 常數
    bit 常數用數字 0 或 1 來表示,不需加上引號。如果使用大於 1 的數字,它會轉換成 1。

  • datetime 常數
    datetime 常數是利用特殊格式的字元日期值來表示,再加上單引號。如需有關 datetime 常數格式的詳細資訊,請參閱<使用日期和時間資料>。

    以下是 datetime 常數的範例:

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

    時間常數的範例如下:

    '14:30:24'
    '04:24 PM'
    
  • integer 常數
    integer 常數用沒有加上引號的數字字串來表示,不含小數點。integer 常數必須是整數;它們不能包含小數點。

    以下是 integer 常數的範例:

    1894
    2
    
  • decimal 常數
    decimal 常數用沒有加上引號的數字字串來表示,其中包含小數點。

    以下是 decimal 常數的範例:

    1894.1204
    2.0
    
  • float 和 real 常數
    float 和 real 常數是利用科學記號表示法來表示。

    以下是 float 或 real 值的範例:

    101.5E5
    0.5E-2
    
  • money 常數
    money 常數用數字字串來表示,選擇性地含有小數點,前面也選擇性地附加貨幣符號。money 常數不需加上引號。

    SQL Server 不會強制執行任何一種分組規則,如在代表貨幣的字串中,每三位數插入一個逗號 (,)。

    [!附註]

    在指定 money 常值的任何位置中,逗號都會被忽略。

    以下是 money 常數的範例:

    $12
    $542023.14
    
  • uniqueidentifier 常數
    uniqueidentifier 常數是代表 GUID 的字串。您可以依照字元或二進位字串格式來指定它們。

    下列範例指定相同的 GUID:

    '6F9619FF-8B86-D011-B42D-00C04FC964FF'
    0xff19966f868b11d0b42d00c04fc964ff
    

指定負數和正數

若要指示數字是正數或負數,請將 +- 一元運算子套用於數值常數。這會建立一個代表帶正負號的數值之數值運算式。當沒有套用 +- 一元運算子時,數值常數會使用正數。

  • 帶正負號的 integer 運算式:

    +145345234
    -2147483648
    
  • 帶正負號的 decimal 運算式:

    +145345234.2234
    -2147483648.10
    
  • 帶正負號的 float 運算式:

    +123E-3
    -12E5
    
  • 帶正負號的 money 運算式:

    -$45.56
    +$423456.99
    

增強型定序

SQL Server 支援字元及支援增強型定序的 Unicode 字串常數。如需詳細資訊,請參閱<COLLATE (Transact-SQL)>子句。