Dynamics 365中极特殊语言的文字搜索结果异常

微软动态CRM专家罗勇分享在Dynamics365CustomerEngagement中遇到的高棉语搜索异常问题,通过调整SQLServer查询语句中的COLLATE参数,成功解决了搜索结果不准确的情况。

微软动态CRM专家罗勇 ,回复316或者20190314可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me 。

有些比较少见的问题,比如高棉语,一些高棉语语示例如下,我也不知道啥意思。

 

如果你用这种语言去搜索,可能搜索结果会异常。比如我自己的环境建立了几个高棉语的用户如下。

 

比如我用如下的语句去查找:

https://demo.luoyong.me/api/data/v9.0/contacts?$select=fullname&$filter=fullname eq 'ប៊ុនសៀវមាន' 

执行结果如下,可以看到结果并不正确,出来了三个结果,只有一个结果是正确的。

 

然后我抓了下生成的SQL语句,如下:

exec sp_executesql N'select 
top 5001 "contact0".FullName as "fullname"
, convert(bigint, "contact0".VersionNumber) as "versionnumber"
, "contact0".ContactId as "contactid" 
from
 ContactBase as "contact0" 
where
 ("contact0".FullName = @FullName0) 
order by
 "contact0".ContactId asc',N'@FullName0 nvarchar(200)',@FullName0=N'ប៊ុនសៀវមាន'

在Microsoft SQL Server中执行结果如下,这样可以知道是因为Microsoft SQL Server执行返回的结果就是有问题的。

 

那怎么解决呢?从Dynamics 365 Customer Engagement上面来讲我还不知道好办法,但是Microsoft SQL Server上改动下执行的语句就可以:

 

exec sp_executesql N'select 
top 5001 "contact0".FullName as "fullname"
, convert(bigint, "contact0".VersionNumber) as "versionnumber"
, "contact0".ContactId as "contactid" 
from
 ContactBase as "contact0" 
where
 ("contact0".FullName COLLATE Khmer_100_CI_AI = @FullName0) 
order by
 "contact0".ContactId asc',N'@FullName0 nvarchar(200)',@FullName0=N'ប៊ុនសៀវមាន'

 

 

也就是在执行的T-SQL中加上了指定用哪种语言来执行搜索,这里指定的就是高棉语,COLLATE Khmer_100_CI_AI 。

 

转载于:https://www.cnblogs.com/luoyong0201/p/Dynamics_365_Special_Language_Text_Query_Result_Unexpected.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值