zoukankan      html  css  js  c++  java
  • SQL 语句中的通配符

    地址:http://blog.sina.com.cn/s/blog_4291fcdb010009ry.html

    SQL 语句中的通配符

    通配符:

    通配符 描述 示例
    % 包含零个或更多字符的任意字符串。 WHERE title LIKE '%computer%' 将查找处于书名任意位置的包含单词 computer 的所有书名。
    _(下划线) 任何单个字符。 WHERE au_fname LIKE '_ean' 将查找以 ean 结尾的所有 4 个字母的名字(Dean、Sean 等)。
    [ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符。 WHERE au_lname LIKE '[C-P]arsen' 将查找以arsen 结尾且以介于 C 与 P 之间的任何单个字符开始的作者姓氏,例如,Carsen、Larsen、Karsen 等。
    [^] 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符。 WHERE au_lname LIKE 'de[^l]%' 将查找以 de 开始且其后的字母不为 l 的所有作者的姓氏。

    将通配符作为文字使用

    可以将通配符模式匹配字符串用作文字字符串,方法是将通配符放在括号中。下表显示了使用 LIKE 关键字和 [ ] 通配符的示例。

    符号 含义
    LIKE '5[%]' 5%
    LIKE '[_]n' _n
    LIKE '[a-cdf]' a、b、c、d 或 f
    LIKE '[-acdf]' -、a、c、d 或 f
    LIKE '[ [ ]' [
    LIKE ']' ]
    LIKE 'abc[_]d%' abc_d 和 abc_de
    LIKE 'abc[def]' abcd、abce 和 abcf

    使用 ESCAPE 子句的模式匹配

    可搜索包含一个或多个特殊通配符的字符串。例如,customers 数据库中的 discounts 表可能存储含百分号 (%) 的折扣值。若要搜索作为字符而不是通配符的百分号,必须提供 ESCAPE 关键字和转义符。例如,一个样本数据库包含名为 comment 的列,该列含文本 30%。若要搜索在 comment 列中的任何位置包含字符串 30% 的任何行,请指定由 WHERE comment LIKE '%30!%%' ESCAPE '!' 组成的 WHERE 子句。如果不指定 ESCAPE 和转义符,SQL Server 将返回所有含字符串 30 的行。

    下例说明如何在 pubs 数据库 titles 表的 notes 列中搜索字符串"50% off when 100 or more copies are purchased":

    SELECT notes FROM titles WHERE notes LIKE '50%% off when 100 or more copies are purchased' ESCAPE '%'


    </DIV>

    上述通配符列表不够全面:

    在字符串比较中使用通配符

    内含的模式匹配为字符串比较提供了一个多用途工具。下表显示了你可以通过 Like 运算符 使用的通配符和它们匹配的数字或字符串的数目。

    样式中的字符 表达式中的匹配
    ? _(下划线) 任何单一字符
    * or % 零个或多个字符
    # 任何单一数字(0 — 9)
    [charlist] 任何在字符表中的单一字符
    [!charlist] 任何不在字符表中的单一字符

    可用括在括号 ([ ]) 中的一组字符(字符表)来匹配表达式中任何的单一字符,而且字符表中几乎可以包含 <A target=_blank href="javascript:hhobj_1.Click()">ANSI 字符集中的任何字符,包括数字。事实上,特殊字符,如左括号 ([ )、问号(?)、井字号(#)和<A target=_blank href="javascript:hhobj_2.Click()">星号(*), 当它们括在括号内时,可以直接和它们自己匹配。一组字符内的右括号 ( ]) 不能匹配它自己,但是如果它是一组之外的单一字符,就能用来匹配。

    除了括在括号内的字符的简单表列,字符表可以指定一字符范围,用连字符号 (-) 来隔开范围的上下界。例如,在样式 中使用 [A-Z] ,可在包含从 A 到 Z 的任何大写字母的表达式内,找出相应的字符位置。 可以在括号之中包含多个范围且不需要在范围间划上界线。例如,[a-zA-Z0-9] 指任何符合文数值的字符。

    一定要注意,仅当使用 Microsoft Jet 4.X 版和 Microsoft OLE DB Provider for Jet 时,ANSI SQL 通配符 (%) 和 (_) 才可用。若使用 Microsoft Access 或 DAO,则将其视为原义字符。

    样式匹配的重要的规则还有:

    • 字符表开头的惊叹号(!),意味着在表达式中寻找那些不包括在字符表中的字符。若惊叹号(!)在括号之外,它只匹配它自己。
    • 如果连字符(-)在字符表的开头(如果有惊叹号,则紧跟在惊叹号之后),或在字符表的末尾,则它匹配连字符(-)自己。否则它被视为 ANSI 字符范围的标识。
    • 当您指定一个字符范围时,首尾字符必须以升序的顺序出现(A-Z 或 0-100)。例如,[A-Z] 是有效的,而 [Z-A] 则无效。
    • 字符顺序 [ ] 忽略不计,被看作<A target=_blank href="javascript:hhobj_3.Click()">零长度字符串 (“”)。

    Like 运算符

    比较<A target=_blank href="javascript:hhobj_1.Click()">字符串表达式和 <A target=_blank href="javascript:hhobj_2.Click()">SQL 表达式中的模式。

    语法

    expression Like "pattern"

    运算符 Like 的语法包含下列部分:

    部分 说明
    expression 用于 WHERE 子句的 SQL 表达式
    Pattern 表达式与之比较的字符串或字符串文本。

    说明

    可用 Like 运算符来找出符合指定样式的字段值。对于 pattern,可以指定完整的值(例如,Like "Smith"),或用<A target=_blank href="javascript:hhobj_3.Click()">通配符来找出一数值范围(例如,Like "Sm*")。

    在一表达式中,可用 Like 运算符比较字段值和字符串表达式。例如,如果在 SQL 查询中输入 Like "C*",则查询会返回所有字段中以字母 C 开头的值。 在<A target=_blank href="javascript:hhobj_4.Click()">参数查询 中,可以提示用户提供要搜寻的样式。

    在下面的例子里,会返回以字母 P 开头、而其后接着介于 A 到 F 之间的任何字母和三个数字的数据:

    Like "P[A-F]###"

    在下面的列表中说明如何使用 Like 运算符来测试不同样式的表达式。


    符合的种类

    样式
    符合(返回 True ) 不符合(返回 False )
    多个字符 a*a aa,aBa,aBBBa aBC
      *ab* abc,AABB,Xab aZb,bac
    特殊字符 a[*]a a*a aaa
    多个字符 ab* abcdefg,abc cab,aab
    单一字符 a?a aaa,a3a,aBa aBBBa
    单一数字 a#a a0a,a1a,a2a aaa,a10a
    字符范围 [a-z] f,p,j 2, &
    范围之外 [!a-z] 9, &, % b,a
    非数字 [!0-9] A,a,&,~ 0, 1, 9
    组合字 a[!b-m]# An9,az0,a99 abc,aj0

  • 相关阅读:
    Python的内置模块itertools
    列表的sort()和sorted()方法
    Python面试
    数据分析相关概念
    数据分析中Numpy,Pandas,Matplotlib,scripy和Scikit-Learn等数据处理库...
    mysql数据库的语法及简介
    Cannot add foreign key constraint
    MySQL数据库重装
    MySQL数据库在Python中的操作
    Python中的取整函数
  • 原文地址:https://www.cnblogs.com/dengshiwei/p/4258669.html
Copyright © 2011-2022 走看看