次のようなレコードを含むExcelLinksという列を持つテーブルがあります。
= INDEX('\\ san1 \ engData [BT_500.0_Structural_Position.xls] Concrete'!$ B $ 4:$ IK $ 83、MATCH($ K $ 9、'\\ san1 \ engData [BT_500.0_Structural_Position.xls] Concrete'!$ A $ 4:$ A $ 83,0)、MATCH(C212、'\\ san1 \ engData [BT_500.0_Structural_Position.xls] Concrete'!$ B $ 3:$ IK $ 3,0))/ 1000000
= INDEX('\\ san1 \ engData [GK_600.0_Pumps.xls] Pumps'!$ B $ 4:$ BD $ 39、MATCH($ K $ 9、'\\ san1 \ engData [TT_640.0_Generator.xls] Generator'!$ A $ 4:$ A $ 39,0)、MATCH(C214、'\\ san1 \ engData [GK_600.0_Pumps.xls] Pumps'!$ B $ 3:$ BD $ 3,0))/ 1000000
= INDEX('\\ san1 \ engData [TT_640.0_Generator.xls] Generator'!$ B $ 4:$ HU $ 83、MATCH($ K $ 9、'\\ san1 \ engData [GK_600.0_Pumps.xls] Pumps'!$ A $ 4:$ A $ 83,0)、MATCH(C218、'\\ san1 \ engData [TT_640.0_Generator.xls] Generator'!$ B $ 3:$ HU $ 3,0))/ 1000000
理想的な出力は次のとおりです。
_______________________________________
| Row | LinkCount | UniqueLinkCount |
| 1 | 3 | 1 |
| 2 | 3 | 2 |
| 3 | 3 | 2 |
このデータをクエリして、レコードごとに使用されているファイルと一意のファイルの数を確認したいと思います。
オンラインで検索しましたが、これを行うものは見つかりませんでした。
カーソルを作成し、レコードごとに、ファイルの数で始まる文字\\
と終わる文字を検出し'!$
て、ファイルの数を数えることを考えています。
難しいのは、複数のインターリンク(異なるファイルである可能性があります)を使用する関数=INDEX
と関数を備えたExcelLinksです。MATCH
このテーブルには1200万を超えるレコードがあるため、カーソルを使用したパフォーマンスが心配です。
正規表現を使用してOracleでこれを行うためのより良い方法がいくつかあります。SQL ServerにはRegExがないことを知っており、それが最も簡単なオプションである場合は、CLRストアドプロシージャを作成/使用する用意があります。