使用“Like”函数比较同一表中的2列

时间:2010-03-08 18:14:38

标签: sql sql-server sql-server-2005 pattern-matching

我试图找到一种方法来查询同一个表中两个不同列中的值,其中结果集将指示columnB的值不包含columnA值的实例。

例如,我的“节点”表包含“NodeName”和“DNS”列。 值应类似于以下内容:

NodeName    DNS
Router1     Router1.mydomain.com

我想运行一个查询来显示哪些行的DNS值不包含(或以NodeName字段的值开头)。我认为查询应该具有类似于以下内容的功能,但显然我在这种情况下缺少关于使用“赞”的内容。

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

我正在使用SQL Server 2005,任何建议都将非常感谢...... :)

2 个答案:

答案 0 :(得分:5)

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

您的DNS LIKE 'NodeName%'正在将字符串文字“NodeName”与DNS进行比较

编辑:

Nissan Fan添加了NOT LIKE '%' + NodeName + '%',这意味着不需要NOT LIKE NodeName + '%'

这取决于是否需要“包含”或“以...开头”:请选择。

@Nissan Fan:谢谢:你应该把它作为你自己的答案发布......

答案 1 :(得分:0)

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