Сравнение 2 столбцов в одной таблице с функцией «Мне нравится» - PullRequest
6 голосов
/ 08 марта 2010

Я пытаюсь найти способ запроса значений в двух разных столбцах в одной таблице, где результирующий набор будет указывать на случаи, когда значение columnB не содержит значения columnA.

Например, моя таблица «Узлы» содержит столбцы «Имя узла» и «DNS». Значения должны выглядеть примерно так:

NodeName    DNS
Router1     Router1.mydomain.com

Я хочу выполнить запрос, чтобы показать, какие строки имеют значение DNS, которое не содержит (или не начинается с) значение поля NodeName. Я думаю, что запрос должен функционировать примерно так, как показано ниже, но, очевидно, я что-то упускаю в связи с использованием «Like» в этой ситуации.

SELECT NodeName, DNS
WHERE DNS NOT LIKE 'NodeName%'

Я использую SQL Server 2005, и любые предложения будут с благодарностью ...:)

Ответы [ 2 ]

5 голосов
/ 08 марта 2010
SELECT NodeName, DNS
WHERE DNS NOT LIKE NodeName + '%' AND DNS NOT LIKE '%' + NodeName + '%'

Ваш DNS LIKE 'NodeName%' сравнивает строковый литерал "NodeName" с DNS

Edit:

Nissan Fan добавил NOT LIKE '%' + NodeName + '%', что означает, что NOT LIKE NodeName + '%' не требуется.

Зависит от того, хотите ли «содержит» или «начинается с»: выбирайте.

@ Nissan Fan: спасибо: вы должны опубликовать это как собственный ответ ...

0 голосов
/ 06 апреля 2011
SELECT USR.USER_ID, USR.LDAP_TITLE, LRM.LDAP_ROLE, LRM.ROLE_ID, RLS.PRIMARY_ROLE
FROM USERS USR, NEW_LDAP_ROLE_MATCH LRM, NEWROLES RLS
WHERE (INSTR(USR.LDAP_TITLE,LRM.LDAP_ROLE) > 0) 
AND LRM.ROLE_ID = RLS.ROLE_ID;

Потребовалось много времени, чтобы сценарий заработал. Проверьте ссылки ниже на SQL-запросы. http://www.anaesthetist.com/mnm/sql/query.htm

...