mssql如何把1個字段裏的"as|dkf|j|haj|skfdkl"分拆爲5個字段輸出?

 今天一個客戶的技術人員諮詢mssql如何把1個字段裏的"as|dkf|j|haj|skfdkl"分拆爲5個字段輸出?
一般是作爲5條記錄輸出。
而charindex又不支持匹配第n次的出現,只有從哪一個字符開始匹配
寫起來可能是,第n個字段是(n-1)!次的charindex嵌套使用了
——暈!!!!

 

 

需要先建一個函數,改進charindex支持第n次匹配,之後的寫法就會清晰很多
效率不一定高

declare @s varchar(1000)
set @s='1asdk|2jf|3jke|4rjkfje|5wkrfjkwerf'

declare @n int
declare @i int,@p int

set @n=3

set @i=1
set @p=0
while @i<=@n
begin
set @p=charindex('|',@s,@p+1)
set @i=@i+1
end
select @p

 

 

這是客戶對自己的老系統的改造,原來是4個字段,現在需要保存10項信息了

不想動表結構

發佈了60 篇原創文章 · 獲贊 9 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章