Подтвердить что ты не робот

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

Я пытаюсь написать оператор 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

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

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

Любые идеи?

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

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 ||'%'

Ответ 7

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

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