2011-10-17 10 views
0

私は、Excelスプレッドシートからデータをスクラップしてデータベースに格納するアプリケーションに取り組んでいます。データはExcelで標準化されていないので、スクレープは非常に柔軟性が必要です。SQL Regex Split Column

前に、私はExcelCellLocationを格納して、今ExcelColumnExcelRowStart、およびExcelRowEndにそれを分割しているところ私は最近、もう少し一般的なように実装を変更しました。

私はそのテーブル内のすべての行を取得し、ExcelCellLocationを新しい実装に分割する方法を探しています。例えば

ExcelCellLocation 
F5 
AB23 

が変更された理由は、私が今、ブック内の別のスプレッドシートをこするていますし、実装がより良いスーツに順に変更する必要があることである

ExcelColumn | ExcelRowStart | ExcelRowEnd 
F   | 5    | 5 
AB   | 23   | 23 

になり新しいスプレッドシートは現在スプレッドシートのために働いています。新しいマッピングがより次のようになります。

ExcelColumn | ExcelRowStart | ExcelRowEnd 
BC   | 10   | 150 
BC   | 160   | 300 

各レコードを反復処理して良いと考えて変更を行いますSQLスクリプトでこれを行う方法はありますか?

ありがとうございます!

+0

あなたが正規表現、タグを含めました、と私は簡単に 'F'&' 5'かに '' F5'とAB23'を変換するための正規表現を想像することができます「AB」と「23」はそれぞれですが、あなたの質問が何であるかわからないので、答えを得るためにデータ構造についての十分な情報が含まれているかどうかはわかりません。 –

答えて

1
-- Sample data 
;with T(ExcelCellLocation) as 
(
    select 'F5' union all 
    select 'AB23' 
) 

-- Query 
select 
     left(ExcelCellLocation, patindex('%[0-9]%', ExcelCellLocation)-1) as ExcelColumn, 
     stuff(ExcelCellLocation, 1, patindex('%[0-9]%', ExcelCellLocation)-1, '') as RowStart 
from T 

結果:

ExcelColumn RowStart 
----------- ----------- 
F   5 
AB   23 
+1

私はこの答えは、質問自体についての私のコメントに関する私の質問のいくつかを明確にすると思います:D –

+0

@MikaelErikssonこの問合せを使用して問合せに戻すのではなく、データベースにコミットする方法はありますか。 – shuniar

+0

@MikaelEriksson Nevermind私はそれを理解することができました.. – shuniar