我正在开发一个应用程序,用于从excel电子表格中抓取数据并将其存储到数据库中。数据在excel中没有标准化,因此scrape需要非常灵活。我最近将实现更改为在
之前更加通用我正在存储ExcelCellLocation
,现在将其分解为ExcelColumn
,ExcelRowStart
和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 :(得分: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