將一條記錄處理成多行。
1、需要提取charge_code中位於"|"和";"之間的內容。
2、如果一條記錄中有多個符合要求,分行,且保持其它字段內容一致。
最終結果如下:
資料庫:sqlserver。(只對sqlserver有效,非標準sql語句)
-- ----------------------------
-- table structure for test_temp
-- ----------------------------
if exists (select * from sys.all_objects where object_id = object_id(n'[dbo].[test_temp]') and type in ('u'))
drop table [dbo].[test_temp]
gocreate table [dbo].[test_temp] (
[charge_code] varchar(256) collate chinese_prc_ci_as null,
[exec_date] datetime null)go
alter table [dbo].[test_temp] set (lock_escalation = table)
go-- ----------------------------
-- records of [test_temp]
-- ----------------------------
insert into [dbo].[test_temp] values (n'士abcd大夫|123456;超聲**報告|5645;', n'2020-07-03 19:58:13.183')
goinsert into [dbo].[test_temp] values (n'士123ad大夫|126f3456;超聲圖as文報告|56qd45;', n'2020-07-03 19:58:39.863')
goinsert into [dbo].[test_temp] values (n'士123ad大夫|as125;', n'2020-07-03 20:32:10.560')
go-- ----------------------------
-- 查詢結果進行比對
-- ----------------------------
select * from test_temp;
select tab3.exec_date,
--tab3.chargecode,
substring(tab3.chargecode, 0, charindex(';', tab3.chargecode)) as charge_code
from
( select tab1.exec_date,
substring(tab1.charge_code, tab2.number, charindex('|', tab1.charge_code + '|', tab2.number) - tab2.number) as chargecode,
tab2.number
from test_temp tab1
join master..spt_values tab2
on tab2.type = 'p'
where charindex('|', '|' + tab1.charge_code, tab2.number) = tab2.number
and tab2.number <> 1
) tab3;
處理多行輸入資料
要求如上圖,如下 include include include 要使用stringstream,必須先加入這一行 using namespace std int main cout sum endl getline使用時可以接受空格並輸出,同時可以指定分隔符 getline ss,temp,參考資...
awk處理多行文字的記錄
awk使用內建的變數rs將輸入流拆分為乙個個記錄 record 使用fs將乙個記錄拆分為若干個域 field rs的預設值為 n,fs的預設值為空白字元。有時候會出現乙個記錄跨越多行的情況,這時就需要手動設定rs為記錄中不會出現的字元 否則會將乙個記錄拆分為兩個記錄 如空行 rs 分頁符 rs f ...
HBASE多行轉列冷資料處理
背景及介紹詳見 鏈冷熱資料處理實踐 方案主要包含讀寫兩塊,寫是第一步,因為pg是行資料,而hbase是列資料,而且在做資料同步的同時,還要考慮怎樣的資料結構可以方便資料讀取,不僅僅如此,因為乙個主單會對應多條明細,而查詢的時候需要根據單號撈取相關的明細資料,最終通過不斷嘗試,梳理出以下可執行方案 行...