Сравнение столбцов, где один похож на часть другого

Я пытаюсь написать инструкцию Select, где я могу видеть, является ли один столбец частью другой.

tblNames ID FullName FirstName 1 Mr. John Doe, CEO John 2 Mr. Jake Doe, Exec Jake 3 Mrs. Betty Smith, Chair Jill 

Запрос должен возвращать:

 3 | Mrs.Betty Smith, Chair | Jill 

Однако my just возвращает каждую строку в таблице:

 SELECT ID, FullName, FirstName FROM tblNames WHERE '%' + FirstName + '%' not like Fullname 

Есть идеи?

Переверните туда, где-то примерно так:

 Fullname not like '%' + FirstName + '%' 

Попробуй это:

 SELECT * FROM tblNames WHERE ISNULL( CHARINDEX (FirstName , FullName),0) = 0 

CHARINDEX будет быстрее (более результативным), чем предложение LIKE, так как ему не нужно принимать подстановочные знаки. Образцы данных, приведенные выше с небольшим количеством строк, не будут демонстрировать преимущества производительности, но когда в миллионах строк CHARINDEX будет работать лучше.

Переключите аргументы в LIKE в WHERE :

 SELECT ID, FullName, FirstName FROM tblNames WHERE Fullname not like '%' + FirstName + '%' 

Подстановочный знак должен быть вторым аргументом.

Это сработало для меня:

 SELECT * FROM `table` WHERE `col1` NOT LIKE CONCAT('%', `col2`, '%') 

Найденный здесь: http://www.edmondscommerce.co.uk/mysql/compare-two-columns-in-mysql/

Как-то он работал только с конкат-функцией (?).

Oracle ожидает число, когда используется +. Для струны, пожалуйста, используйте образец:

 SELECT ID, FullName, FirstName FROM tblNames WHERE FullName like '%' || FirstName||'%' 

Чтобы сравнить один столбец таблицы с столбцом другой таблицы, выполните следующие действия:

 select a.*,table_2_col_1, table_2_col_2 from (select table_1_col_1, table_1_col_2 from table_1 where ) a, table_2 where table_1_col_1 like '%' || table_2_col_1 ||'%' 

Это выглядит нормально, за исключением того, что вы, вероятно, захотите переключить порядок в своем месте:

 WHERE Fullname not like '%' + FirstName + '%' 

Скобки также исправили бы проблему.

 SELECT ID, FullName, FirstName FROM tblNames WHERE ('%' + FirstName + '%') not like Fullname 
Давайте будем гением компьютера.