回答論壇問題順便做個紀錄,「SQL字串找尋問題」
如何將下列資料用select語法取出B開頭的資料呢?
ID | Data |
001 | A000,B000,C000 |
002 | B000,D000,E000 |
希望結果:
001 B000
002 B000
最主要先切割字串來分析,首先搭配之前寫的備忘錄,通常我會在SQL建立一個切割字串的函數「在T-SQL裡面切割字串(Spilt String)」
接著就能將這個函數回傳的table join起來,再進行篩選
Declare @table Table
(
ID VARCHAR(3),
data NVARCHAR(15)
)
Insert INTO @table values ('001','A000,B000,C000')
Insert INTO @table values ('002','B000,D000,E000')
select tb.id,tb2.data from @table tb
CROSS APPLY Split(data,',') AS tb2
where tb2.data like 'B%'
特別APPLY是SQL 2005之後才提供的語法,所以要注意版本相容性
APPLY又分為CROSS APPLY和OUTER APPLY,
CROSS APPLY 可以把發成我們常用的inner join ,會查詢有交集的結果
OUTER APPLY就相當於left join,會以左邊的資料表為主
詳細的範例可以以上面的MSDN連結延伸閱讀。
執行結果:
沒有留言:
張貼留言