我必须运行一个查询,其中一些数据来自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_;在类似的操作中。
但是当我对类似的参数进行硬编码时,它工作得很好。
有人能帮我吗?
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