Dynamics 365 字段包含中文〇查询异常

📅 2026/7/18 20:19:21 👁️ 阅读次数 📝 编程学习
Dynamics 365 字段包含中文〇查询异常

最近在做一个医药器械类的客户,碰到了一个平时碰不到的问题,医院名称中包含了中文〇有,就是看上去一个圈,这个在国家的一些解放军医院的名字中非常常见。

具体的问题如下,我在用医院名字做包含查询时,出来了一些不符合的医院名称,比如我查的"九二〇" 结果出来了"九二八","九二四","九二五"

但是如果你查等于,是没问题的,F12查看了往后台post的fetchxml 也没什么问题

因为涉及到产品底层了只能开case给微软,我也有自己的猜想,因为在on-premises时代,安装的时候最后的选择数据库连接的时候,有个sql的排序规则,可能问题出在这,后续微软的答复也印证了我的猜想。

如下是微软support的答复

我们分别测试了全球云和中国区环境:

​编辑

  • 在新建的英文基准语言环境中,该问题可以稳定复现。

  • 在新建的简体中文基准语言环境中,“包含”查询可以正确识别字符“〇”。

  • 用户个人界面语言为中文或英文不会改变测试结果。


这是因为Dynamics在创建环境时,会根据Organization的base language选择对应的SQL collation。英文环境使用的Latin collatio无法正确处理“〇”这一字符,因此出现非预期匹配;新建的中文环境使用当前版本的Chinese DB collation,可以正确处理该字符。

而分析了客户当前的环境,使用到的Chinese DB collation较早版本的中文排序规则 Chinese_PRC_90_CI_AI 且已经deprecate,所以客户建的环境较早,应该是21V刚落地的时候就开了,当时问题比较多,可能provision的时候出了问题。

解决方案就是新建一个中文base的环境,然后迁移solution,再进行数据迁移,动静非常大 ,成本很高,最后客户接受了这个产品bug,没有做进一步的应对。