我正在將數據從Excel電子表格導入到我的SQL數據庫中。如何匹配可變長度的子字符串?
imp
表是導入的數據,app
表是現有的數據庫表。
app.ReceiptId
被格式化爲「A」後跟一些數字。以前它是4位數字,但現在可能是4或5位數字。
實例:
A1234
A9876
A10001
imp.ref
是從Excel自由文本引用字段。它由一些任意長度的描述組成,然後是ReceiptId,然後是格式爲「 - BZ-0987654321」的不相關參考編號(有時裁剪得很短,甚至完全沒有)。
實例:
SHORT DESC A1234 - BZ-0987654321
LONGER DESCRIPTION A9876 - BZ-123
REALLY LONG DESCRIPTION A2345 - B
REALLY REALLY LONG DESCRIPTION A23456
下面的代碼適用於4位ReceiptId
,但不會正確捕獲一個5位之一。
UPDATE app
SET
[...]
FROM imp
INNER JOIN app
ON app.ReceiptId = right(right(rtrim(replace(replace(imp.ref,'-',''),'B','')),5)
+ rtrim(left(imp.ref,charindex(' - BZ-',imp.ref))),5)
如何更改代碼以捕獲4(A1234)或5(A12345)數字?
您能否提供一些示例數據?我想一些應用程序。RecieiptId和imp.Ref就足夠了。另外,應該認爲'A1234'等於'A12345'嗎? –
@ZoharPeled不,每個ReceiptId都是唯一的。我會添加一些示例數據,但我認爲這是相當好的描述。 – Adeptus
我會建議不要在執行連接時專門在sql中執行此操作。 – ughai