【问题标题】:Compare uniqueidentifier in where clause比较 where 子句中的 uniqueidentifier
【发布时间】:2015-06-26 04:57:09
【问题描述】:

我们有两个表:MainTableCloneOfMainTable

两个表的结构是:

ID : int Identity Primarykey
Foo: nvarchar(50) 
RowVersion : uniqueidentifier

我们想通过比较 RowVersion 和 bla bla 来简单地获取更新的行 ...

SELECT * 
FROM MainTable 
INNER JOIN CloneOfMainTable On MainTable.ID = CloneOfMainTable.ID
WHERE MainTable.RowVersion <> CloneOfMainTable.RowVersion

它不起作用^_^“

【问题讨论】:

  • 如何究竟它不起作用?您收到任何错误消息吗?选择的结果是否与您的预期不同,以及如何?更好地解释以获得更好的答案。
  • 不,只是它不返回任何结果,where子句部分不起作用
  • 你确定应该得到结果吗?
  • 是的,我确定!还有一件事 RowVersion 可以为空
  • 会不会是MainTable.RowVersion &lt;&gt; CloneOfMainTable.RowVersion中的一边总是null,所以比较总是假的?

标签: sql sql-server tsql uniqueidentifier


【解决方案1】:

比较 uniqueidentifier 值没有限制。由于该列可以为空,您可以使用 coalesce 来包含 null 值进行比较:

WHERE coalesce(MainTable.RowVersion,'00000000-0000-0000-0000-000000000000') <> coalesce(CloneOfMainTable.RowVersion,'00000000-0000-0000-0000-000000000000')

【讨论】:

    猜你喜欢
    • 2017-09-16
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多