SQL Select 其中一个字段等于另一个字段,但中间有一个附加字符
SQL Select where one field equals another, but with an additional character in the middle
我有 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)))
这个returns没有结果。我尝试使用 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)))
仍然没有结果。我显然错过了一些东西。
任何帮助将不胜感激。
如果问题只是连字符,您可以使用 replace()
:
WHERE REPLACE(Reconcile.PONumber, '-', '') = REPLACE(Invoices.PONum, '-' ,'')
我有 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)))
这个returns没有结果。我尝试使用 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)))
仍然没有结果。我显然错过了一些东西。 任何帮助将不胜感激。
如果问题只是连字符,您可以使用 replace()
:
WHERE REPLACE(Reconcile.PONumber, '-', '') = REPLACE(Invoices.PONum, '-' ,'')