如何从SQL Server中的特定位置删除一个字母

时间:2015-08-22 13:56:54

标签: sql sql-server

我正在练习通配符Character.And我开始了解'^'字符,这有助于找到一个不包含使用通配符的特定字母的单词。

我的查询是从vEmployee找到一个名字,该名字的名字的第二个字母中不包含字母“Y”,其名称以“D”开头......

USE AdventureWorks2012

SELECT *
FROM HumanResources.vEmployee
WHERE FirstName LIKE 'D[^Y]%'


BusinessEntityID    Title   FirstName   MiddleName  LastName
8                   NULL    Diane           L       Margheim
16                  NULL    David           M       Bradley
52                  NULL    Doris           M       Hartwig
53                  NULL    Diane           R       Glimp
56                  NULL    Denise          H       Smith
61                  NULL    Diane           H       Tibbott
70                  NULL    David           J       Ortiz
90                  NULL    Danielle        C       Tiedt
118                 NULL    Don             L       Hall
127                 NULL    David           P       Hamilton

但我的问题是我们怎样才能找到第三个字母不包含'A'的名字。 我尝试了这样的查询

SELECT *
FROM HumanResources.vEmployee  
WHERE FirstName LIKE 'D[^^A]%'

但它没有给我一个正确的答案,也没有显示任何错误。

那么,答案是什么?

2 个答案:

答案 0 :(得分:0)

您可以使用_通配符。它只匹配一个字母:

SELECT *
FROM HumanResources.vEmployee
WHERE FirstName LIKE 'D_[^A]%'

或者,如果你不想要Y而不是A:

SELECT *
FROM HumanResources.vEmployee
WHERE FirstName LIKE 'D[^Y][^A]%'

作为注释:表达式LIKE 'D[^^A]返回第一个字符为“D”且第二个字符既不是“^”也不是“A”的所有名称。克拉在[前面只有特殊含义。

答案 1 :(得分:0)

您可以使用正则表达式

WHERE FirstName LIKE 'D[A-Z][^A]%'