Looking for advise on the best way to approach the following
TBL1 (Local SQL DB) where ID = varchar
TBL2 (Remote MYSQL DB) where ID = INT
WITH TBL1 as (
SELECT
[Results] as 'ID'
FROM [DB].[results]
),
TBL2 as (
select * from openquery(LINKEDSERVER,'select ID, Name from DB')
)
Select
TBL1.[ID],
TBL2.[NAME]
FROM [DB]
left outer JOIN TBL1 ON TBL1.ID = TBL2.ID
Tried a couple different methods like CAST/CONVERT, but ending up with either an error like "Conversion failed when converting the varchar value '12345 ' to data type int." or getting all NULLS for TBL2.
Attempted the following:
WITH TBL1 as
(
SELECT CAST(ISNULL([Results],'0') AS INT) as 'ID'
FROM [DB].[results]
),
TBL2 as ( select * from openquery(LINKEDSERVER,'select ID, Name from DB')
)
Select TBL1.[ID], TBL2.[NAME]
FROM TBL1 Left Outer join TB2 ON TBL1.ID = TBL2.ID
This results in "Conversion failed when converting the varchar value '12345 ' to data type int."
Also Attempted:
WITH TBL1 as ( SELECT [Results] as 'ID' FROM [DB].[results]
),
TBL2 as ( select * from openquery(LINKEDSERVER,'select CONVERT(ID, CHAR) AS ID, Name from DB')
)
Select TBL1.[ID], TBL2.[NAME]
FROM TBL1 Left Outer join TB2 ON TBL1.ID = TBL2.ID
This results in the TBL1.ID values being displayed, but all the TBL2.Name values are NULL
Appreciate everyone's help. This is what got this working:
WITH TBL1 AS (
SELECT REPLACE(REPLACE(ID, CHAR(13), ''), CHAR(10), '')
FROM DB
WHERE ISNUMERIC(REPLACE(REPLACE(ID, CHAR(13), ''), CHAR(10), '')) = 1
),
TBL2 AS (
SELECT *
FROM OpenQuery(
LINKEDSERVER,
'SELECT id, name FROM DB'
)
)
SELECT
TBL1.ID
,TB2.Name
FROM TBL2
LEFT OUTER JOIN TBL1 ON TBL1.ID = TBL2.id