SQL Выберите, где одно поле равно другому, но с дополнительным символом в середине - PullRequest
1 голос
/ 26 марта 2020

У меня есть 2 таблицы данных счетов, и я пытаюсь использовать одну из них для обновления другой, основываясь на номере заказа.

UPDATE Reconcile
SET Reconcile.Customer = Invoices.Customer,
Reconcile.InvoiceNum = Invoices.InvoiceNumber
FROM Invoices
WHERE Reconcile.PONumber = Invoices.PONum

Достаточно просто. Моя проблема в том, что номера PO не всегда совпадают идеально. У некоторых из них есть да sh. Поэтому вместо FM000112345678 для сопоставления у меня может быть FM0001-12345678 , но мне все равно нужно сопоставить их. Я безуспешно тестировал некоторые запросы SUBSTRING в SELECT.

SELECT * FROM Reconcile AS A
WHERE A.PONumber IN (
SELECT DISTINCT PONum
FROM Invoices AS B
WHERE (B.PONum LIKE (SUBSTRING(A.PONumber,0,5) + '%'))
AND B.PONum LIKE ('%' + SUBSTRING(REVERSE(A.PONumber),0,8)))

Это не возвращает результатов. Я пытался с CHARINDEX.

SELECT * FROM Reconcile AS A
WHERE A.PONumber IN (
SELECT DISTINCT PONum
FROM Invoices AS B
WHERE (B.PONum LIKE (SUBSTRING(A.PONumber,0,5) + '%'))
AND B.PONum LIKE (RIGHT(A.PONumber,CHARINDEX('-',REVERSE(A.PONumber))-1)))

Все еще нет результатов. Я явно что-то упускаю. Любая помощь будет оценена.

1 Ответ

3 голосов
/ 26 марта 2020

Если проблема только в дефисах, вы можете использовать replace():

WHERE REPLACE(Reconcile.PONumber, '-', '') = REPLACE(Invoices.PONum, '-' ,'')
...