Ответ 1
Переверните туда, где-то примерно так:
Fullname not like '%' + FirstName + '%'
Я пытаюсь написать оператор 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
Любые идеи?
Переверните туда, где-то примерно так:
Fullname not like '%' + FirstName + '%'
Попробуйте это:
SELECT * FROM tblNames
WHERE ISNULL( CHARINDEX (FirstName , FullName),0) = 0
CHARINDEX
будет быстрее (более производительным), чем предложение LIKE
, так как он не должен принимать во внимание символы подстановки. Приведенные выше примеры данных с небольшим количеством строк не показывают выигрыша в производительности, но при миллионах строк CHARINDEX
будет работать лучше.
Это сработало для меня:
SELECT *
FROM 'table'
WHERE 'col1' NOT LIKE CONCAT('%', 'col2', '%')
Нашел здесь: http://www.edmondscommerce.co.uk/mysql/compare-two-columns-in-mysql/
Каким-то образом это работает правильно только с concat-функцией (?).
Переключите аргументы в LIKE
в предложении WHERE
:
SELECT ID, FullName, FirstName
FROM tblNames
WHERE Fullname not like '%' + FirstName + '%'
Подстановочный знак должен быть вторым аргументом.
Это выглядит нормально, за исключением того, что вы, вероятно, захотите переключить порядок в своем месте:
WHERE Fullname not like '%' + FirstName + '%'
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 ||'%'
Скобки также исправили бы проблему.
SELECT ID, FullName, FirstName
FROM tblNames
WHERE ('%' + FirstName + '%') not like Fullname