SQL Regex拆分列

时间:2011-10-17 15:42:10

标签: sql sql-server regex

我正在开发一个应用程序,用于从excel电子表格中抓取数据并将其存储到数据库中。数据在excel中没有标准化,因此scrape需要非常灵活。我最近将实现更改为在

之前更加通用

我正在存储ExcelCellLocation,现在将其分解为ExcelColumnExcelRowStartExcelRowEnd

我正在寻找一种方法来获取该表中的所有行,并将ExcelCellLocation拆分为新的实现。

例如:

ExcelCellLocation
F5
AB23

变为

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

更改的原因是我现在正在抓取工作簿中的另一个电子表格,并且需要更改实现,以便更好地适应新的电子表格,同时仍然可以处理当前正在删除的电子表格。新的映射看起来更像是这样:

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

有没有办法用SQL脚本执行此操作,该脚本将遍历每条记录并进行适当的更改?

提前致谢!

1 个答案:

答案 0 :(得分: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