尝试运行从我的数据库中读取 * 的 SQL 命令,但我需要它在电子邮件字段中查找特定文本,如果不相等则返回 null。例如,我试图过滤掉我们数据库中所有不是内部电子邮件地址的电子邮件,因此它需要过滤掉任何没有我们公司名称的电子邮件。
我可以使用 LIKE 命令对其进行过滤,但它只是简单地忽略了结果中的其余字段。我知道访问有 IIf(InStr 命令,所以我希望 SQL 中有类似的东西
尝试运行从我的数据库中读取 * 的 SQL 命令,但我需要它在电子邮件字段中查找特定文本,如果不相等则返回 null。例如,我试图过滤掉我们数据库中所有不是内部电子邮件地址的电子邮件,因此它需要过滤掉任何没有我们公司名称的电子邮件。
我可以使用 LIKE 命令对其进行过滤,但它只是简单地忽略了结果中的其余字段。我知道访问有 IIf(InStr 命令,所以我希望 SQL 中有类似的东西
不确定我是否完全理解,但这样的事情可能对你有用。
USE Server
SELECT
firstName AS EmployeeFirstname
, lastName AS EmployeeLastname
, title AS EmployeeTitle
, id AS EmployeeID
,
Case
When emailAddress Like '%@mycompany.com'
Then emailAddress
Else Null
End AS EmployeeEmailAddress
FROM db.Information
WHERE ISNUMERIC(id)<> 0
AND empStatus = 'A'
因此,无论他们拥有什么电子邮件,这都会为您提供行(仍然考虑您对 ISNUMERIC(id)<> 0 AND empStatus = 'A' 的其他选择)。但是在这些行中,如果电子邮件是您的公司,它们将显示,如果不是,则该字段将为 Null。显然将“mycompany.com”更改为您实际需要搜索的任何字符串,
如果要排除公司不在电子邮件地址中的所有记录,请添加
where
emailAddress not like '%companyname%'
如果要清除非公司电子邮件地址,可以使用case
Select
case when emailaddress not like '%company%' then null else emailaddress end