用于清除特定文本的SQL命令

时间:2013-10-22 16:16:59

标签: sql sql-server

尝试运行从我的数据库中读取*的SQL命令,但我需要它在电子邮件字段中查找特定文本,如果不相等则返回null。例如,我正在尝试过滤掉数据库中不是内部电子邮件地址的所有电子邮件,因此需要过滤掉任何没有公司名称的电子邮件。

我能够使用LIKE命令对其进行过滤,但它只是忽略了结果中的其余字段。我知道访问有IIf(InStr命令,所以我希望在SQL中有类似的东西

2 个答案:

答案 0 :(得分:1)

不确定我完全理解,但这样的事情对你有用。

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)&lt;&gt; 0 AND empStatus ='A')。但是在那些行中,如果电子邮件是你的公司,他们会显示,如果不是,那么该字段将是Null。显然将“mycompany.com”改为喜欢你想要搜索的任何字符串,

答案 1 :(得分:0)

如果要排除公司不在电子邮件地址中的所有记录,请添加

 where 
       emailAddress not like '%companyname%'

如果您想删除非公司电子邮件地址,可以使用case

Select
     case when emailaddress not like '%company%' then null else emailaddress end