PHP T-SQL函数返回奇怪的umlaut行为/错误?

PHP T-SQL函数返回奇怪的umlaut行为/错误?,php,sql-server,function,Php,Sql Server,Function,当我通过php运行T-SQL函数时,我注意到一个奇怪的行为,我想是否有人能帮我找出原因 我有一个函数,可以从通过php脚本运行的数据库中获取客户端x的前10个业务,它返回3个简单列(业务名称、sum和nro),供php在站点上显示。现在这里是它变得奇怪的地方 客户A在返回的客户中有此业务:KeskinäinentyöeläkevakuutusyhtiöElo。当函数通过PHP运行时,如果该值在返回的值中,则整个结果将为null(因此我不获取任何数据)。在SQL server上运行时,一切正常 客

当我通过php运行T-SQL函数时,我注意到一个奇怪的行为,我想是否有人能帮我找出原因

我有一个函数,可以从通过php脚本运行的数据库中获取客户端x的前10个业务,它返回3个简单列(业务名称、sum和nro),供php在站点上显示。现在这里是它变得奇怪的地方

客户A在返回的客户中有此业务:KeskinäinentyöeläkevakuutusyhtiöElo。当函数通过PHP运行时,如果该值在返回的值中,则整个结果将为null(因此我不获取任何数据)。在SQL server上运行时,一切正常

客户B在返回的客户中有这样的业务:Keskinäinen EläkevakuutusyhtiöIlmarinen。客户端B获取所有数据,无论php和服务器上是否包含该值

现在我的第一个想法是可以的,其余的值有问题,但是没有:

客户A KeskinäinentyöeläkevakuutusyhtiöElo的价值,-xxxxx.xx,2
客户B拥有Keskinäinen EläkevakuutusyhtiöIlmarinen,-xxxxx.xx,1

两者都有可接受的值,最后一个值和第二个最后一个值是金额值,对于其他业务来说可能要高得多,不会出现任何问题

现在我尝试了where子句,发现它们在php端确实存在可能的元差异。当我在php代码中添加一个liikesuhde不喜欢“Keskinä%”的
时,它会“过滤”掉KeskinäinentöeläkevakuutusyhtiöElo,但会离开Keskinäinen eläkevakuutusyhtiöIlmarinen;在SQL server端,两者的行为是相同的(都被过滤掉了),这表明ä´具有元差异

liikesuhde不像“Keskin%
”那样将两者都过滤掉

我已经检查了名称所在的表,但是它们看起来相同(两个都是ä´s和ö´s),并且在sql函数或php端都没有使用名称的处理,所以我猜php在它们中看到了与ä´s不同的东西,但我不知道如何找出什么


另外,在PHP上调用函数时,我尝试将sum和nro值(所有值都是1)更改为相同,但只要客户端A的名称出现,我就不会得到任何结果。

在任何点(特别是在两个插入值之间),列liikesuhde是否有排序规则更改?很好。这两个数据都位于同一个表中,因此该表不应该强制执行排序规则吗?不应该有任何排序冲突,对吗?我的理解是,如果排序有问题,从原点到目标的插入将失败?回答您的问题。我不知道,我必须找出这两个案例的数据来源,然后才能给出明确的答案。排序可以设置为列级别,这就是我为什么要问的原因。跟进后让我们知道最初的问题。表中的排序规则是Finnish_Swedish_CI_,正如这两个方的名称所在的列一样。因为函数从同一个表和列中获取它们;这将强制进行排序,即使它们可能是从不同的表插入的