通配符
更新:2007 年 11 月
可以通过使用通配符搜索数据列或表达式内的模式。例如,可以搜索姓氏以“Van”开头或以“son”结尾的所有员工。
通配符
可以使用通配符搜索任何被视为文本字符串的列。含有数据类型字符的列总是可以被视为文本字符串;含有日期时间数据的列可被视为某些数据库的文本字符串。
若要搜索模式,请使用 LIKE 运算符,然后用通配符替代搜索字符串中的一个或多个字符。可使用下面两个通配符的任意一个:
通配符 |
含义 |
---|---|
% |
在该位置有零个或多个字符。 |
_ |
在该位置有一个字符。 |
例如,若要搜索所有以“Van”开头的所有名字,可指定搜索条件 LIKE 'Van%'。若要查找“Jan”、“Jen”和“Jon”这类名字,可指定搜索条件 LIKE 'J_n'。
搜索用作通配符的字符
某些情况下,可能需要搜索包含一个用作通配符的字符的字符串。例如,您可能想在 titles 表中查找书名中包含字符串“10%”的所有出版物。因为“%”是所搜索的字符串的一部分,因此必须将其指定为文本字符串而不是通配符。
若要搜索可解释为通配符的字符,可指定转义符。将转义符放在实际上是字符串一部分的“%”或“_”字符的紧前面。若要指定转义符,请将 ESCAPE 子句包含在 LIKE 搜索判据的紧后面。在“条件”窗格的“条件”列中或在“SQL”窗格中都可以指定转义符。
例如,假设要查找包含字符串“10%”的所有书名。假设想将字符“#”定义为转义符,以便将“#”包含到实际上是字符串一部分的“%”字符前面。可在“条件”窗格中输入:
LIKE '%10#%%' ESCAPE '#'
所得到的 SQL 语句中的 WHERE 子句如下:
WHERE title LIKE '%10#%%' ESCAPE '#'
说明: |
---|
只能在“SQL”窗格中定义转义符。 |
搜索日期时间列
当使用日期时间数据类型的列时,可以搜索日期或时间的任意部分,包括月份的缩写和完整年份。
说明: |
---|
是否能够搜索日期时间列要取决于所用的数据库,以及是否可以将日期时间数据类型作为字符串搜索。有关详细信息,请参见数据库文档。 |
例如,在 Microsoft SQL Server 数据库中,可以使用下列 LIKE 子句搜索日期在 1994 年的所有行:
LIKE '%1994%'
下列子句搜索日期在一月份内的所有行,与年份无关:
LIKE 'Jan%'
可用来搜索日期时间列的字符串的准确格式取决于所使用的数据库。
说明: |
---|
如果数据库所在计算机的区域设置不用于运行查询的计算机的区域设置,则可能遇到意外结果。为避免出现这种情况,应使用数据库所在计算机的日期格式表达式。有关详细信息,请参阅您的数据库管理系统文档。 |
通配符搜索示例
下面的示例说明通配符的使用。
搜索表达式 |
说明 |
匹配示例 |
---|---|---|
|
查找以“Van”开头的值。 |
Vann、Van Beeck、Vanderhorn |
|
查找以“J”开头并以“n”结尾的值。 |
Jon、Johnson、Jason、Juan |
|
查找以“son”结尾的值。 |
Son、Anderson |
|
查找在字符串的任意位置包含“sam”的值。 |
Sam、Samson、Grossam |
|
在日期时间列中查找三月份 (March) 内的值,与年份无关。 |
3/1/94 01 Mar 1992 |
|
在日期时间列中查找 1994 年的值 |
12/1/94 01 Jan 1994 |
|
查找四个字符的值,其中前三个字符为“Mac”。 |
Mack、Macs |
|
查找四个字符的值,其中后三个字符为“dam”。 |
Adam、Odam |
|
查找包含“s”和在值的结尾包含“n”的值,并且在这两个字符之间有任意一个字符,在它们前面有任意多个字符。 |
Anderson、Andersen、Johnson、san、sun |