请问 SQL Server 中可以使用类似于正则表达式中的 [^] 进行匹配吗?具体应该怎么弄?

解决方案 »

  1.   

    SQL Server 2005 联机丛书  [ ](通配符 - 要匹配的字符)以下示例使用 [] 运算符查找其地址中有四位邮政编码的所有 Adventure Works 雇员的 ID 和姓名。USE AdventureWorks;
    GO 
    SELECT e.EmployeeID, c.FirstName, c.LastName, a.PostalCode
    FROM HumanResources.Employee AS e
        INNER JOIN Person.Contact AS c ON e.ContactID = c.ContactID
    INNER JOIN HumanResources.EmployeeAddress AS ea ON e.EmployeeID = ea.EmployeeID
        INNER JOIN Person.Address AS a ON a.AddressID = ea.AddressID
    WHERE a.PostalCode LIKE '[0-9][0-9][0-9][0-9]';
    GO
    EmployeeID      FirstName      LastName      PostalCode
    ----------      ---------      ---------     ----------
    290             Lynn           Tsoflias      3000
      

  2.   

    SQL Server 2005 联机丛书 
    [^](通配符 - 无需匹配的字符)以下示例使用 [^] 运算符在 Contact 表中查找所有名字以 Al 开头且第三个字母不是字母 a 的人。
    USE AdventureWorks;
    GO
    SELECT FirstName, LastName
    FROM Person.Contact
    WHERE FirstName LIKE 'Al[^a]%'
    ORDER BY FirstName;
      

  3.   

    SQL Server 2005 联机丛书  
     
    _(通配符 - 匹配一个字符)匹配涉及模式匹配的字符串比较操作(如 LIKE 和 PATINDEX)中的任何单个字符。
    以下示例使用 _ 运算符查找 Contact 表中的所有人(包含一个以 an 结尾的三字母名字)。
    USE AdventureWorks;
    GO
    SELECT FirstName, LastName
    FROM Person.Contact
    WHERE FirstName LIKE '_an'
    ORDER BY FirstName;
      

  4.   

    %
     包含零个或多个字符的任意字符串。
     
    _
     任何单个字符。
     
    [ ]
     指定范围(例如 [a-f])或集合(例如 [abcdef])内的任何单个字符。
     
    [^]
     不在指定范围(例如 [^a - f])或集合(例如 [^abcdef])内的任何单个字符。
     
      

  5.   

    SQL 还不支持正则表达式,如果要用的话,SQL 2005可以写CLR函数 
    2000惨一点要写扩展存储过程,或者调OLE组件
      

  6.   

    太泛
    补充:可用于like 模糊查询中及 PATINDEX 函数中
      

  7.   

    SQL Server 2005 联机丛书
    [^](通配符 - 无需匹配的字符)以下示例使用 [^] 运算符在 Contact 表中查找所有名字以 Al 开头且第三个字母不是字母 a 的人。    USE AdventureWorks; GO SELECT FirstName, LastName 
    FROM Person.Contact WHERE FirstName 
    LIKE 'Al[^a]%' ORDER BY FirstName;
      

  8.   

    like PATINDEX 可以使用 [] [^] _ %
      

  9.   

    完全可以,老夫用的 SQL Server 2005.非关于正则表达式,你去搜索吧,海了去了.