通常,为了过滤数据,我们需要的不是通过条件的精确匹配进行采样,而是通过近似值进行采样。也就是说,例如,当我们搜索名称与特定模式(正则表达式)匹配或包含特定符号或单词的产品时。为此,SQL 中有一个运算符 LIKE,用于查找近似值。为了构建这样的模式,使用元字符(特殊字符,用于搜索部分值),即:“百分号”(%)或星号(*),“下划线”(_)或“问号”(?) 、“方括号”([ ])。
例如,我们从表中选择仅与名称中包含单词 Skis 的产品相关的记录。为此,我们将创建一个合适的模板:
Run SQLSELECT *
FROM Sumproduct
WHERE Product LIKE '*Skis*'
正如您所看到的,DBMS 仅选择“产品”列中包含包含单词 Skis 的产品的记录。
下划线或问号用于替换单词中的单个字符。让我们将 Bikes 一词中的所有元音替换为“问号”(?) 并查看结果:
Run SQLSELECT *
FROM Sumproduct
WHERE Product LIKE 'B?k?s'
方括号元字符 ([ ]) 用于同时指定要搜索的一组字符。
SELECT *
FROM Sumproduct
WHERE City LIKE '[TN]*'
在上面的示例中,我们在 City 字段中选择了城市名称以字母 T 或 N 开头的记录。
另外,在这种情况下,我们可以使用另一个元字符来执行相反的操作。让我们在正则表达式中添加一个感叹号 (!),这意味着“不等于”(对于 MS Access)或一个幂号 (^)(对于其他 DBMS)。
SELECT *
FROM Sumproduct
WHERE City LIKE '[!TN]*'
也就是说,我们创建的最后一个查询将被读取为:从 Sumproduct 表中选择所有列,并且仅选择 City 字段中城市名称不以字母 T 或 N 开头的记录。此外,我们注意到“方括号”元字符中的一组字母仅对应于文本中的一个位置。
如果我们使用我们已经知道的 NOT 运算符,我们可以获得类似的结果,但带有感叹号 (!) 的记录会更短。