輸入搜尋值的規則 (Visual Database Tools)

本主題會討論輸入下列搜尋條件的常值類型時必須使用的規格:

  • 文字值

  • 數字值

  • 日期

  • 邏輯值

[!附註]

此主題的資訊衍生自標準 SQL-92 的規則。但是,每一個資料庫都可以用自己的方式實作 SQL。因此,這裡提供的準則不一定適用於所有的情況。如果對於在特定資料庫輸入搜尋值有任何的疑問,請參考您所使用的資料庫文件。

搜尋文字值

下列準則適用於在搜尋條件中輸入文字值時:

  • 引號:以單引號括住文字值,例如以下的姓氏範例:

    'Smith'
    

    如果您是在準則窗格中輸入搜尋條件,則可以只輸入文字值,[查詢和檢視設計師] 會自動在前後加上單引號。

    [!附註]

    在某些資料庫中,單引號中的詞會被視為常值,而雙引號中的詞會被視為資料行或資料表參考之類的資料庫物件。因此,即使 [查詢和檢視設計師] 可以接受以雙引號括住的詞,其解譯的結果可能會和您的預期不同。

  • 嵌入單引號:如果您要搜尋的資料包含單引號 ('),您可以輸入兩個單引號以表示您輸入的確實是單引號的常值,不是分隔符號。例如,以下條件會搜尋「Swann's Way」這個值:

    ='Swann''s Way'
    
  • 長度限制:輸入長字串時,不要超過您資料庫 SQL 陳述式的最大長度。

  • 區分大小寫:遵照您使用的資料庫的區分大小寫規則。您使用的資料庫決定了文字搜尋是否區分大小寫。例如,有些資料庫將運算子「=」解譯為大小寫完全相符,但是有些資料庫則允許任何大小寫字元組合都相符。

    如果您不確定資料庫是否使用區分大小寫搜尋,可以在搜尋條件中使用 UPPER 或 LOWER 函數轉換搜尋資料的大小寫,如以下範例所示:

    WHERE UPPER(lname) = 'SMITH'
    

搜尋數字值

下列準則適用於在搜尋條件中輸入數字值時:

  • 引號:不要用引號括住數字。

  • 非數字字元:除了小數分隔符號 (在 Windows [控制台] 的 [地區設定] 對話方塊中所定義) 和負號 (-) 以外,不要包含非數字字元。不要包含數字分位符號 (例如千位用逗號分開) 或貨幣符號。

  • 小數符號:如果是輸入整數,可以包含小數符號,不論您搜尋的值是整數或實數。

  • 科學記號:可以使用科學記號輸入非常大或非常小的數字,如以下例子所示:

    > 1.23456e-9
    

搜尋日期

用來輸入日期的格式是依您使用的資料庫和 [查詢和檢視設計師] 中是在哪個窗格輸入日期而定。

[!附註]

如果您不知道資料來源所用的格式為何,請在 [準則] 窗格的篩選條件資料行中,以任何您熟悉的格式輸入日期。設計工具會將大部份這類的輸入項目轉換成適當格式。

[查詢和檢視設計師] 可以使用下列的日期格式:

  • 地區設定特性 (Locale-Specific):在 [Windows 區域設定內容] 對話方塊中指定的日期格式。

  • 資料庫特性:資料庫能夠辨識的任何格式。

  • ANSI 標準日期:使用括號、標記「d」來指定日期和日期字串的格式,如以下例子所示:

    { d '1990-12-31' }
    
  • ANSI 標準日期時間:類似於 ANSI 標準日期,但是不用「d」,改用「ts」,並且在日期中加入時、分及秒 (使用 24 小時格式的時鐘),例如以下例子的 1990 年 12 月 31 日:

    { ts '1990-12-31 00:00:00' }
    

    ANSI 標準日期格式通常是用於以真實日期資料類型代表日期的資料庫。相較之下,日期時間格式則是用於支援日期時間資料類型的資料庫。

下表摘要了可以在 [查詢和檢視設計師] 不同窗格中使用的各種日期格式。

窗格

日期格式

準則

地區設定特性?資料庫特性? ANSI 標準

準則窗格中輸入的日期,會在 SQL 窗格中轉換為與資料庫相容的格式。

SQL

資料庫特性 ?ANSI 標準

結果

地區設定特性

搜尋邏輯值

每一種資料庫的邏輯資料格式不同。False 值常常會儲存為零 (0)。True 值則常是儲存為 1,偶爾會有儲存為 –1 的情形。在搜尋條件中輸入邏輯值時適用下列準則:

  • 若要使用零搜尋 False 值,如以下例子所示:

    SELECT * FROM authors
    WHERE contract = 0
    
  • 搜尋 True 值時如果不確定該使用什麼格式,可以像下面例子一樣用 1 試試看:

    SELECT * FROM authors
    WHERE contract = 1
    
  • 或者可以搜尋任何非零值以擴大搜尋範圍,如以下例子所示:

    SELECT * FROM authors
    WHERE contract <> 0