我们有一个奇怪的问题。我们正在升级 JDE,并且数据库架构正在发生变化 - 一些 char 列正在更改为 nchar 类型。但是,我们发现某些搜索不再有效,并且我们发现这在我们的 SQL Server 2008 数据库中是一致的:
在我测试的数据库中,ItemNumber 列是一个 char(25) 并且具有不同长度的内容。
SELECT * FROM TableName WHERE ItemNumber LIKE '%S'
返回一堆行。但是,如果我们将列更改为 nchar(25),则该查询现在只返回那些 ItemNumber 值以“S”结尾且长度为 25 个字符的行,因此现在似乎(可能正确)采用尾随空格考虑到 - 如果您将通配符值更改为“%S”,它会找到以“S”结尾的 24 个字符项目编号。
显然,这对我们来说是一个相当大的问题,因为 *S 搜索在 JDE 中不再起作用,因为底层数据库调用现在需要修剪每个 nchar 列。这是一个已知问题,还是我们需要更改的某个设置?
附加信息 我们无法控制所使用的列类型,也无法更改生成的基础 SQL,因为这是我们的 ERP 系统及其升级的一部分。我们已经记录了与 Oracle 的通话,但据我所知,他们没有看到这一点,也无法复制它(但我们不知道他们在什么情况下尝试这样做),再加上它在我们的其他数据库/服务器上发生的事情让我想知道它是否不是某个晦涩的设置。