比较一个与另一个相似的列

cra*_*gmj 24 sql sql-server

我正在尝试编写一个Select语句,我可以看到一列是否与另一列相似.

tblNames 
ID    FullName                   FirstName
1     Mr. John Doe, CEO          John
2     Mr. Jake Doe, Exec        Jake
3     Mrs. Betty Smith, Chair     Jill
Run Code Online (Sandbox Code Playgroud)

查询应该返回:

3 | Mrs.Betty Smith, Chair | Jill
Run Code Online (Sandbox Code Playgroud)

然而,我只返回表中的每一行:

SELECT ID, FullName, FirstName
FROM tblNames
WHERE '%' + FirstName + '%' not like Fullname
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

jzd*_*jzd 30

反转在哪里,到这样的事情:

Fullname not like '%' + FirstName + '%' 
Run Code Online (Sandbox Code Playgroud)


p.c*_*ell 11

试试这个:

SELECT * FROM tblNames
WHERE  ISNULL( CHARINDEX (FirstName , FullName),0) = 0
Run Code Online (Sandbox Code Playgroud)

CHARINDEX比LIKE子句更快(更高性能),因为它不必考虑通配符.上面包含少量行的示例数据不会显示性能优势,但是当数百万行时,CHARINDEX会表现得更好.


小智 5

这为我工作:

SELECT *
FROM `table`
WHERE `col1` NOT LIKE CONCAT('%', `col2`, '%')
Run Code Online (Sandbox Code Playgroud)

在这里找到它:http : //www.edmondscommerce.co.uk/mysql/compare-two-columns-in-mysql/

不知何故,它只能与concat函数(?)一起正常工作。