使用SQL Server中引用MySQL数据源的参数



我必须运行一个查询,其中一些数据来自SQL Server数据库,另一些来自MySQL数据库。我设法做到了,但在MySQL数据库中使用参数时出现了问题。

这里的错误查询:

select sp.SLC_ID, a.ASS_NAM, p.PCE_NAM, p.PCE_DES, pr.PRF_NAM,
(
SELECT top 1 t2.CleTri
FROM (
SELECT CAST(t1.CLETRI as varchar) CleTri, CAST(t1.LIBELLE as varchar) Libelle
FROM OPENQUERY("PLMStock",'SELECT CLETRI, LIBELLE FROM produits') t1 
) t2
WHERE t2.Libelle LIKE pr.PRF_NAM + '%'
) as CLETRI
from SELECT_PART sp
left join PART p on p.PCE_ID = sp.PCE_ID
left join ASSEMBLY a on a.ASS_ID = sp.ASS_ID
left join PROFILE pr on pr.PRF_ID = p.PRF_ID
where sp.SLC_ID = 2930 and p.PRD_ID is null

当运行这个查询时,我得到了错误:

消息468,级别16,状态9,行9无法解决"与"之间的排序规则冲突;French_CI_ AS";和"Latin1_ General_CI_;在类似的操作中。

但是当我对类似的参数进行硬编码时,它工作得很好。

有人能帮我吗?

LIKE比较受排序规则的影响。

https://learn.microsoft.com/en-us/sql/t-sql/statements/collations?view=sql-服务器-ver15

WHERE t2.Libelle COLLATE database_default LIKE pr.PRF_NAM + '%'

错误指示两列之间的排序规则不同,需要转换其中一列或另一列以匹配。

以下内容对你有用吗?

WHERE t2.Libelle LIKE pr.PRF_NAM + '%' COLLATE French_CI_AS

最新更新