sql - 使用 "Like"函数比较同一个表中的 2 列

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

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

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

NodeName    DNS
Router1     Router1.mydomain.com

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

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

我正在使用 SQL Server 2005,如有任何建议,我们将不胜感激...:)

最佳答案

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:谢谢:你应该将其发布为你自己的答案......

关于sql - 使用 "Like"函数比较同一个表中的 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2403596/

相关文章:

sql-server - 通过 SQL Server 发送电子邮件失败

sql - 测试 SQL Server 中的空格

sql-server - 为什么存储过程的运行速度比裸 T-SQL 慢?

SQL 除了性能

sql - 具有默认值的列和具有默认约束的列有什么区别?

php - 从 PHP 传递时 SQL 返回错误

sql - 使用 SQL CASE 语句动态更改要选择的表

sql - MySql 正则表达式选择存储过程中匹配(动态)多个值的列

mysql - SQL join 和 count do net 把它放在一起

sql - 每个 worker 的最大日期