在 SQL 服务器引用 MySQL 数据源中使用参数
Use parameters in SQL Server referencing MySQL datasource
我必须 运行 一个查询,其中一些数据来自 SQL 服务器数据库,一些来自 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
当 运行 执行此查询时,出现错误:
Msg 468, Level 16, State 9, Line 9
Cannot resolve the collation conflict between "French_CI_AS" and
"Latin1_General_CI_AS" in like operation.
但是当我对 like 参数进行硬编码时,它工作正常。
有人可以帮我吗?
错误表明两列之间的排序规则不同,您需要转换一个或另一个以匹配。
以下对你有用吗?
WHERE t2.Libelle LIKE pr.PRF_NAM + '%' COLLATE French_CI_AS
LIKE 比较受排序规则的影响。
https://docs.microsoft.com/en-us/sql/t-sql/statements/collations?view=sql-server-ver15
WHERE t2.Libelle COLLATE database_default LIKE pr.PRF_NAM + '%'
我必须 运行 一个查询,其中一些数据来自 SQL 服务器数据库,一些来自 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
当 运行 执行此查询时,出现错误:
Msg 468, Level 16, State 9, Line 9 Cannot resolve the collation conflict between "French_CI_AS" and "Latin1_General_CI_AS" in like operation.
但是当我对 like 参数进行硬编码时,它工作正常。
有人可以帮我吗?
错误表明两列之间的排序规则不同,您需要转换一个或另一个以匹配。
以下对你有用吗?
WHERE t2.Libelle LIKE pr.PRF_NAM + '%' COLLATE French_CI_AS
LIKE 比较受排序规则的影响。
https://docs.microsoft.com/en-us/sql/t-sql/statements/collations?view=sql-server-ver15
WHERE t2.Libelle COLLATE database_default LIKE pr.PRF_NAM + '%'