我在 SQL Server 中有如下表:
select col from table
col1
------
02-567 City, ul. ABc 44, woj. Zak
56-123 City2, ul. Grt 78, woj. Maaap
44-153 Raw, Pl. 777, woj. Rapat
我需要創建查詢,它會給我如下結果:
col1 col2 col3
----------------------------------------------------
02-567 City, ul. ABc 44, woj. Zak City ul. ABc 44
56-123 City2, ul. Grt 78, woj. Maaap City2 ul. Grt 78
44-153 Raw, Pl. 777, woj. Rapat Raw Pl. 777
所以:
-
- 要創建 col2,我需要在第一個空格之后取出所有內容直到第一次昏迷
-
- 要創建 col3,我需要從第一次昏迷到第二次昏迷后從空格開始的所有內容
我該怎么做比在 SQL Server 中?
uj5u.com熱心網友回復:
select col1
, col2 = right(left(col1,charindex(',',col1)-1),charindex(',',col1)-1-charindex(' ',col1))
, col3 = ltrim(replace(reverse(parsename(replace(replace(reverse(col1),'.','?'),',','.'),2)),'?','.'))
from [table]
丑,我知道。
uj5u.com熱心網友回復:
也許不那么難看:),但我懷疑輕推的性能不如 LukStorms 的回答。
例子
Select Col1
,Col2 = stuff(Pos1,1,charindex(' ',Pos1 ' '),'')
,Col3 = Pos2
From YourTable A
Cross Apply ( Select Pos1 = trim(JSON_VALUE(S,'$[0]'))
,Pos2 = trim(JSON_VALUE(S,'$[1]'))
From (values ( '["' replace(string_escape([Col1],'json'),',','","') '"]' ) ) B1(S)
) B
結果
Col1 Col2 Col3
02-567 City, ul. ABc 44, woj. Zak City ul. ABc 44
56-123 City2, ul. Grt 78, woj. Maaap City2 ul. Grt 78
44-153 Raw, Pl. 777, woj. Rapat Raw Pl. 777
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/371554.html
標籤:sql sql-server 查询语句 子串 字符索引
上一篇:從逗號分隔的SQL列中查找
