我在基于另一列中的字符串搜索列中字符串的SQL语法有什么问题



我正在使用SQL Server 2014,并且我有以下T-SQL查询:

USE [MyDatabase]
SELECT [FirstName], [Email]
FROM [t1]
WHERE [Email] like '%'  + [FirstName] +  '%'

我想提取[电子邮件]中[名字]出现的所有记录。但是,我的查询没有给出预期的输出。

我写了我的";其中";过滤器基于Gordon Linoff在以下问题中的回答:

来自另一列中一列的SQL搜索字符串

我觉得我错过了什么,但我就是想不出哪里出了问题。

任何帮助都将不胜感激。

样本:

FirstName         Email
Michelle          michelle.jones@noemail.com

我想提取[电子邮件]中出现[FirstName]的所有记录。

如果是,那么这个:

WHERE [FirstName]  like '%'  + [Email] +  '%'

回过头来看我,你真的想要这个:

WHERE [Email]  like '%'  + [FirstName] +  '%'
SELECT t.[FirstName], t.[Email]
FROM t1 AS t
WHERE CHARINDEX(t.[FirstName], t.[Email]) > 0

如果未找到,则返回0。如果找到,则返回第一个索引。例如:

FirstName: foo
Email: foo@bar.com

将返回1。

我认为你需要做这个

SELECT [FirstName], [Email]
FROM [t1]
WHERE [Email] like '%' || [FirstName]  || '%'

最新更新