我的 SQL 语法有什么问题,用于根据另一列的字符串在一列中搜索字符串?

What is wrong with my SQL syntax for searching a String in a column based on the String from another column?

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

USE [MyDatabase]

SELECT [FirstName], [Email]

FROM [t1]

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

我想提取 [FirstName] 在 [Email] 中出现的所有记录。但是,我的查询没有给我预期的输出。

我根据 Gordon Linoff 在以下问题中的回答编写了我的“WHERE”过滤器:

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

如有任何帮助,我们将不胜感激。

样本:

FirstName         Email
Michelle          michelle.jones@noemail.com

I would like to extract all records where [FirstName] appears in the [Email].

如果是这样,那么这个:

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

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

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

Returns 如果未找到则为 0。 Returns 如果找到第一个索引。例如:

FirstName: foo
Email: foo@bar.com

将return 1.

我认为你需要这样做

SELECT [FirstName], [Email]

FROM [t1]

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