输入搜索值的规则 (Visual Database Tools)

适用于:SQL Server

本文讨论在为搜索条件输入以下类型的文本值时必须使用的约定:

  • 文本值
  • 数值
  • 日期
  • 逻辑值

备注

本文中的信息派生自标准 SQL-92 的规则。 但是,每个数据库都可以以自己的方式实现 SQL。 因此,此处提供的准则在每种情况下都可能不适用。 如果对如何输入特定数据库的搜索值有疑问,请参阅所使用的数据库的文档。

搜索文本值

在搜索条件中输入文本值时,以下准则适用:

  • 引号 将文本值用单引号括起来,例如:姓氏。

    'Smith'
    

    如果要在 “条件”窗格中输入搜索条件(Visual Database Tools),只需键入文本值,查询和视图设计器会自动将单引号放在它周围。

    备注

    在某些数据库中,单引号中的术语被解释为文本值,而双引号中的术语解释为数据库对象,如列或表引用。 因此,尽管查询和视图设计器可以接受双引号中的术语,但它可能以不同于预期的方式解释它们。

  • 嵌入撇号 如果要搜索的数据包含单引号(撇号),可以输入两个单引号,以指示单引号表示为文本值,而不是分隔符。 例如,以下条件搜索值“Swann's Way”:

    ='Swann''s Way'
    
  • 长度限制 输入长字符串时,不要超过数据库 SQL 语句的最大长度。

  • 区分大小写 遵循所使用的数据库的区分大小写规则。 正在使用的数据库确定文本搜索是否区分大小写。 例如,某些数据库将运算符“=”解释为精确区分大小写的匹配,但其他数据库允许对大写字符和小写字符的任意组合进行匹配。

    如果不确定数据库是否使用区分大小写的搜索,则可以在搜索条件中使用 UPPER 或 LOWER 函数来转换搜索数据的事例,如以下示例所示:

    WHERE UPPER(lname) = 'SMITH'
    

搜索数值

在搜索条件中输入数值时,以下准则适用:

  • 引号

    不要将数字括在引号中。

  • 非数字字符

    不要包括非数字字符(如 Windows 控制面板的区域 设置 对话框中定义)和负号(-) 以外的小数分隔符。 不要包括数字分组符号(如千位之间的逗号)或货币符号。

  • 小数点

    如果要输入整数,则可以包含小数点,无论要搜索的值是整数还是实数。

  • 科学表示法

    可以使用科学表示法输入非常大或非常小的数字,如以下示例所示:

    > 1.23456e-9
    

搜索日期

用于输入日期的格式取决于所使用的数据库,以及输入日期的查询和视图设计器的窗格中。

备注

如果不知道数据源使用的格式,请在“条件”窗格的筛选器列中键入一个日期,采用你熟悉的任何格式。 设计器将大多数此类条目转换为适当的格式。

查询和视图设计器可以使用以下日期格式:

  • 特定于区域设置

    在“Windows 区域设置属性”对话框中为日期指定的格式。

  • 特定于数据库

    数据库理解的任何格式。

  • ANSI 标准日期

    使用大括号、标记“d”指定日期和日期字符串的格式,如以下示例所示:

    { d '1990-12-31' }
    
  • ANSI 标准日期/时间

    类似于 ANSI 标准日期,但使用“ts”而不是“d”,并将小时、分钟和秒添加到日期(使用 24 小时制),如 1990 年 12 月 31 日示例中所示:

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

    通常,ANSI 标准日期格式与使用真实日期数据类型表示日期的数据库一起使用。 相比之下,支持 datetime 数据类型的数据库使用日期时间格式。

下表汇总了可在查询和视图设计器的不同窗格中使用的日期格式。

面板 日期格式
标准 特定于区域设置的数据库特定的 ANSI 标准

“条件”窗格中输入的日期(Visual Database Tools) 将转换为 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;