【问题标题】:What is the difference between using 0 and 0x0 in SQL Server?在 SQL Server 中使用 0 和 0x0 有什么区别?
【发布时间】:2014-11-26 06:02:01
【问题描述】:

您好,我正在使用 SQL Server 2012。最近我正在研究从数据库的每个表中获取行数。我发现有 4 种不同的方法可以获取该数据,但我发现其中最快的一种方法是使用分区统计信息,即“dm_db_partition_stats”和“sys.objects”。然而,在加入时,我看到它在哪里使用,如“is_ms_shipped=0x0”。我的问题是使用 "is_ms_shipped=0" 和 "is_ms_shipped=0x0" 有什么区别吗?有人可以帮我弄这个吗?

【问题讨论】:

    标签: sql-server-2008-r2 sql-server-2012


    【解决方案1】:

    0x0 是数据类型varbinary(1) 和值0x00 的文字。 (所有位都设置为 0 的单个字节)。

    二进制数据类型具有lowest data type precedence,因此如果与a bit column 比较,它将被隐式转换为该数据类型。导致0

    您应该只使用 0,因为它可以避免使用 0x0 时的隐式转换和不必要的混淆。

    【讨论】:

    • 哇哦,关于 0 和 0x0 的一些新内容。我检查了执行计划,但没有看到查询优化器生成的关于 IMPLICIT_CONVERSION 的警告。
    • 它发生在编译时而不是运行时。无论您是否使用=0=0x0,该计划都有=(0)
    猜你喜欢
    • 2016-08-23
    • 1970-01-01
    • 2011-03-15
    • 2011-01-14
    • 1970-01-01
    • 2010-11-21
    • 2013-08-03
    • 2015-06-06
    • 1970-01-01
    相关资源
    最近更新 更多