小编Han*_*dyD的帖子

SQL Server 与 Oracle 中多字节字符的字节排序

我目前正在将数据从 Oracle 迁移到 SQL Server,但在尝试验证迁移后的数据时遇到了问题。

环境详情:

  • Oracle 12 - AL32UTF8 字符集
  • 客户端 - NLS_LANG - WE8MSWIN1252
  • VARCHAR2 字段

SQL Server 2016

  • Latin1_General_CI_AS 整理
  • NVARCHAR 字段

我在 Oracle 上使用 DBMS_CRYPTO.HASH 生成整行的校验和,然后复制到 SQL 并使用 HASHBYTES 生成整行的校验和,然后我将其进行比较以验证数据匹配。

除具有多字节字符的行外,所有行的校验和都匹配。

例如,具有以下字符的行: ? 校验和不匹配,即使数据传输正确。当我在 Oracle 中使用 DUMP 或在 SQL Server 中转换为 VARBINARY 时,除此字符的字节外,数据完全匹配。

在 SQL Server 中,字节为 0xE625,在 Oracle 中为 0x25E6。

为什么它们的顺序不同,是否有可靠的方法将一个转换为另一个以确保另一端的校验和与具有多字节字符的字符串匹配?

oracle sql-server encoding hashing unicode

5
推荐指数
1
解决办法
1267
查看次数

窗口函数:Rows Unbounded Preceeding 的目的是什么?

在窗口函数中使用 Rows Unbounded Preceeding 子句的目的是什么?我想我明白它基本上是说在汇总聚合函数时不限制回溯多远,但这与根本不使用该子句有什么不同?

您能否提供一个示例来说明以下之间的区别:

SUM(ColumnA) OVER (PARTITION BY ColumnB ORDER BY ColumnC DESC ROWS UNBOUNDED PRECEEDING)

SUM(ColumnA) OVER (PARTITION BY ColumnB ORDER BY ColumnC DESC)

注意:我的问题是在以下行没有上限的上下文中。

sql-server window-functions sql-server-2017

5
推荐指数
1
解决办法
407
查看次数