【发布时间】:2020-07-06 13:00:02
【问题描述】:
我有 2 个发票数据表,我正在尝试使用其中一个来根据 PO 编号更新另一个。
UPDATE Reconcile
SET Reconcile.Customer = Invoices.Customer,
Reconcile.InvoiceNum = Invoices.InvoiceNumber
FROM Invoices
WHERE Reconcile.PONumber = Invoices.PONum
足够简单。我的问题是 PO 编号并不总是完全匹配。其中一些有破折号。因此,我可能有 FM0001-12345678,而不是只匹配 FM000112345678,但我仍然需要匹配它们。我一直在 SELECT 中测试一些 SUBSTRING 查询,但没有成功。
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)))
仍然没有结果。我显然错过了一些东西。 任何帮助将不胜感激。
【问题讨论】:
标签: sql sql-server select substring where-in