我想獲取以下字串中兩個字符之間的字串:
hello @user1, how are you?
我想得到結果之間@的文本SPACE,有沒有辦法做到這一點?我什至可能需要提取2 個或更多@user1@
hello @user1 ,@user2 ,@... , how are you?
這是一個類似表格的示例:
| 樣本 | 預期輸出 |
|---|---|
| 你好@user1 和@user2 你好嗎? | 用戶1,用戶2 |
| @user1 和 @user2 回復了 | 用戶1,用戶2 |
但總會有一個SPACE之后@。
謝謝您的幫助。
uj5u.com熱心網友回復:
通常的方法是結合String_Split()和String_Agg():
with sampledata as (
select 'Hello @user1 and @user2 how are you?' sample union all
select '@user1 and @user2 replied'
)
select sample, String_Agg(Replace([value], '@',''), ', ') Result
from sampledata
cross apply String_Split(sample,' ')
where [value] like '@%'
group by sample;
見作業小提琴
根據要求,確保字串元素排序的可能替代方法如下;此方法使用一個json 陣列,該陣列為排序提供陣列索引:
select sample,
String_Agg(Replace([value], '@',''), ', ') within group(order by seq) Result
from sampledata
cross apply (
select j.[value], 1 Convert(tinyint, j.[key]) Seq
from OpenJson(Concat('["', replace(sample, ' ', '","'), '"]')) j
)s
where [value] like '@%'
group by sample;
請注意,從這個替代小提琴中,您可以使用desc關鍵字反轉排序或字串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/495813.html
上一篇:嘗試在Kalilinux中從vscode終端安裝pyodbc,出現錯誤
下一篇:對自身進行表遞回查找
