大家,早安,
我有一點心理障礙,想看看是否有人可以幫助我。我有一張表格,列出了我們辦公室創建的 PDF 檔案。我們更改了命名約定,我正在嘗試開發邏輯,指定何時創建具有新命名約定的 PDF 以標記舊的,以便我可以開發批處理腳本將它們移出檔案位置。下面是一些例子。順便說一下,每個檔案在表中都是它自己的行。
PAR ORIGFILENAME
111100000012 | 1100000012.pdf
111100000012 | 1100000012_C_1_UB.pdf
111100000012 | 1100000012_R_1.pdf
新的命名約定包含 _R_Number 或 _C_Number。在上面的例子中,第一個檔案是舊的,我想保留第二個 2。
第二個例子有點多。下面是5個檔案。我想保留具有新命名約定的最后兩個并洗掉前 3 個。
PAR ORIGFILENAME
1100000076 1100000076-2.pdf
1100000076 1100000076-3.pdf
1100000076 1100000076.pdf
1100000076 1100000076_C_7_BARN.pdf
1100000076 1100000076_R_1.pdf
如果我能在新檔案存在時鍵入這些舊檔案,我的計劃是將這些名稱開發成批處理腳本并將其合并到每周運行的 SSIS 包中,以保持我們的 PDF 存盤庫干凈。我感謝任何幫助和煽動。
uj5u.com熱心網友回復:
以下應該有效,盡管更多不同數量的樣本資料會很有用。
以下使用可更新的 CTE 來識別舊/新格式名稱,并在相同 PAR 具有新格式的情況下洗掉舊格式
with f as (
select *,
case when OrigFilename like '%*_%' escape '*' then 0 else 1 end del
from t
)
delete from f
where del=1
and exists (select * from f f2 where f2.par=f.par and f2.del=0)
uj5u.com熱心網友回復:
如果您想突出顯示要洗掉的記錄 - 并且您只想以舊格式回傳記錄,當 C_7 和 R_1 記錄都存在時,可能是這樣的?
;WITH c_7_records AS (
SELECT par
FROM my_table
WHERE origfilename LIKE '%_C_7_%'
),
r_1_records AS (
SELECT par
FROM my_table
WHERE origfilename LIKE '%_R_1%'
),
records_to_remove AS (
SELECT
DISTINCT mt.origfilename
FROM my_table AS mt
JOIN c_7_records AS cr ON mt.par = cr.par
JOIN r_1_records AS rr ON mt.par = rr.par
WHERE mt.origfilename NOT LIKE '%_C_7_%'
AND mt.origfilename NOT LIKE '%_R_1%'
)
SELECT * FROM records_to_remove;
sql 小提琴
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/377364.html
上一篇:如何使用PDFBOX從pdf中提取對角線水印并通過保持對齊來提取文本
下一篇:更改pdf文本編碼
