SQL Server (Transact-SQL) 通配符用于指定字符串中的一个或多个字符。它与 LIKE 子句和 WHERE 一起使用 子句来搜索指定模式。
SQL Server 中的通配符
符号 | 描述 | 示例 |
---|---|---|
% | 表示零个、一个或多个字符。 | "J%"表示以"J"开头的值,例如 - John、Jo 和 Jack等 |
_ | 代表一个字符。 | '_o%'代表其中包含"o"的值 第二个位置,例如 - John、Jo 和 Journey 等。 |
[] | 表示 [] 内指定的任何单个字符。 | '[ack]%'表示以a、c或k开头的值,例如-ant、cat或kite等。 |
- | 表示字符范围。 | '[a-d]%'表示以a、b、c或d开头的值,例如-ant、bat、cat或dog等。 |
[^] | 表示[]内未指定的任意字符。 | '[^ack]%'表示不指定的值 以 a、c 或 k 开头,例如 - bat、dog或rat等。 |
下表描述了与 LIKE 运算符一起使用的模式,并使用 ( %) 和 (_)。
模式 | 描述 |
---|---|
'J%' | 以"J"开头的值。 |
'%n' | 以"n"结尾的值。 |
'%oh%' | 任意位置有"oh"的值。 |
'_o%' | 第二个位置有"o"的值。 |
'J_%' | A 以"J"开头且至少包含 2 个字符的值。 |
'J__%' | 以"J"开头且至少包含 2 个字符的值。 至少 3 个字符。 |
'J%n' | 以"J"开头并以"n"结尾的值。 |
示例:
考虑一个数据库,其中包含一个名为 Employee 的表,其中包含以下记录:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
使用 % 通配符 :使用 Employee 表选择所有Name以"Jo"开头记录,查询如下。
SELECT * FROM Employee
WHERE Name LIKE 'Jo%';
这将产生如下所示的结果:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
3 | Jo | Paris | 27 | 2800 |
将 % 通配符与 NOT LIKE 运算符一起使用:NOT LIKE 运算符用作 LIKE 运算符的否定。例如,要选择 Employee 表中 Name 不以"Jo"开头的所有记录,可以使用以下查询:
SELECT * FROM Employee
WHERE Name NOT LIKE 'Jo%';
这将产生如下所示的结果:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
2 | Marry | New York | 24 | 2750 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
使用_通配符:选择Employee<的所有记录/i> Name 包含"o"作为第二个字符的表,查询如下。
SELECT * FROM Employee
WHERE Name LIKE '_o%';
上述代码的结果将是:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
3 | Jo | Paris | 27 | 2800 |
使用 [] 通配符 :选择 Employee 表中具有 Name 的所有记录以"K"、"R"或"M"开头,查询为:
SELECT * FROM Employee
WHERE Name LIKE '[KRM]%';
代码的结果将是:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
2 | Marry | New York | 24 | 2750 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
使用^通配符:选择Employee表中Name不以"K"、"R"或'M',查询为:
SELECT * FROM Employee
WHERE Name LIKE '[^KRM]%';
代码的结果将是:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
3 | Jo | Paris | 27 | 2800 |
6 | Huang | Beijing | 28 | 2800 |
使用 - 通配符:要选择Employee表中Name以'G'到'J'开头的所有记录,查询为:
SELECT * FROM Employee
WHERE Name LIKE '[G-J]%';
代码产生的结果如下:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
3 | Jo | Paris | 27 | 2800 |
6 | Huang | Beijing | 28 | 2800 |