【问题标题】:Is it possible to un-localize MSSQL-results in VBS?是否可以在 VBS 中取消本地化 MSSQL 结果?
【发布时间】:2020-12-10 16:10:23
【问题描述】:

对不起,如果我使用了错误的术语 - 我不喜欢 MSSQL 或 VBScript。

我有一个给定的脚本实现一个 SQL 查询,其中包含

.. AND (rep.is_primary_replica is null or rep.is_primary_replica = ''True'' or rep.is_primary_replica = ''False'') ..

它在 German 服务器上不返回任何结果,只是因为 rep.is_primary_replica 似乎包含 ''Wahr''''Falsch'' 而不是 ''True''''False''

This question 至少是一个类似的问题。

很遗憾,没有wtf 标志。

有没有办法正确地做到这一点?

我可以禁用字符串转换的本地化吗? (在 MS SQL Server 中?VBS?)

【问题讨论】:

  • 您确定是翻译问题吗?好像您正在测试字符串文字。我认为 SQL Server 没有适用于 TrueFalse 的布尔数据类型。现在,如果您正在测试一个 varchar 字段,并且它恰好包含 WahrFalsch,您将不得不选择测试这些实际值。 PS 为什么是双单引号?

标签: sql-server vbscript localization


【解决方案1】:

不要让脚本中的打印值迷惑您。从原始值到字符串的隐式转换取决于客户端(我认为是 VBScript)的语言环境。

如果repsys.dm_hadr_database_replica_states 视图的实例,则此处is_primary_replica 字段的类型必须为bit

如果是这种情况,检查一个位字段是Null,或者它的值等于TrueFalse是没有意义的,反正没有其他可能。

看来您可以安全地从查询中删除此条件。

如果您坚持要包含它,请改用数字文字。

AND (rep.is_primary_replica is null or rep.is_primary_replica = 1 or rep.is_primary_replica = 0)

这是查询位域的正确方法。这样,服务器或客户端的语言环境配置不会造成任何问题。

【讨论】:

  • 然而 - 是否有可能让隐式转换始终使用英语而不是本地化翻译?我很好奇,因为我的一个同事说他隐约记得有这样的选择..
  • @frans 即使有可能,您真的想依赖一个可以简单更改并破坏您的程序的选项吗?要从 VBScript 中的 WScript.Echo CStr(False) 之类的表达式中得到结果 False,您需要确保计算机的语言环境是英语。如果您指的是 SQL Server 查询,最好提出一个包含更多详细信息的新问题。网络上的数据库管理员可以提供更准确的信息。
猜你喜欢
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 2016-11-18
  • 2017-10-13
  • 1970-01-01
  • 1970-01-01
  • 2016-03-02
  • 1970-01-01
相关资源
最近更新 更多