程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQLServer拆分字符串的三種方法

SQLServer拆分字符串的三種方法

編輯:關於SqlServer

  use tempdb

  go

  --測試數據

declare @s varchar(1000)
set @s='ak47,mp5,1,23'

  /*要求輸出結果

S
----
ak47
mp5
1
23
*/

  --3種方法對比:

  --1.[樸實]動態Exec方法:

declare @s1 varchar(1000)
set @s1=right(replace(','+@s,',',''' as S union select '''),len(replace(','+@s,',',''' as S union select '''))-12)+''''
exec(@s1)

  --2.[變通]表交叉方法:

select replace(reverse((left(s,charindex(',',s)))),',','') as S from(
select r,reverse(left(@s,r))+',' as s
from(
select  (select count(*) from sysobjects where name<=t.name ) as r
from sysobjects t 
 )a where r<=len(@s)
and left(@s+',',r+1) like '%,'
)t order by r

  --3.[高級]XML方法:

DECLARE @idoc int;
DECLARE @doc XML;
set @doc=cast('<Root><item><S>'+replace(@s,',','</S></item><item><S>')+'</S></item></Root>' as XML)
EXEC sp_XML_preparedocument @Idoc OUTPUT, @doc
SELECT *  FROM OPENXML (@Idoc, '/Root/item',2)
  WITH (
      [S] varchar(10)
     )

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved