0

我们正在将我们的应用程序升级到完全兼容 Unicode,因为我们最近获得了开箱即用的 Delphi 2009。我正在寻找任何有升级应用程序以接受 Unicode 字符的经验的人。具体回答以下任何问题。

  • 我们需要将 VarChars 更改为 NVarchar,将 Char 更改为 NChar。这里有什么陷阱吗。
  • 我们需要更新所有 sql 语句以在任何 sql 字符串前面包含 N。所以 Update tbl_Customer set Name = 'Smith' 必须变成 Update tbl_Customer set Name = N 'Smith' 。对于某些字段,有什么方法可以默认此设置。这似乎是非同寻常的,这仍然是必需的。
  • 是否可以在 SQLServer 中设置任何默认值来简化此操作?

ps 我们还需要升级我们的Oracle代码

4

3 回答 3

1

Oracle 不要求您使用nvarchar来存储 Unicode 字符串——服务器可以配置为varchar2以 UTF-8 存储。如果你之前只支持 ASCII,它应该是透明的。这应该可以防止对 to 的所有应用程序端搜索和替换的'需要N'

至于 Damien 的观点:它现在可能对您没有帮助,但您确实应该优先考虑摆脱非参数化查询。从维护、性能和安全的角度来看,它们只会拖累您的系统。

于 2008-09-17T10:39:33.737 回答
1

SQL Server 的明显限制是 nchar/nvarchar 的限制是其对应的 char/varchar 的一半(除非您将所有 > 4000 的内容迁移到 nvarchar(max))

于 2008-09-17T13:17:25.010 回答
0

达米安

我不确定你的答案有多大用处。我们有一个庞大的 700,000 行编译代码库,这些代码库是在过去十年中编写的,其中包含大量的 sql 查询。大多数都标准化为几个功能,这些功能是数据库上大多数更新的基础。这些可以很简单地更新。但是,我们还需要检查 CustomerName = '%s' 的每个 where 子句,现在应该是 CustomerName = N'%s'

这是一个真正的问题,需要一个真正的答案。

于 2008-09-17T10:02:50.127 回答