0
Как разбить одну строку на несколько строк?Разделить одну строку на несколько строк
DECLARE @var VARCHAR(50)
SELECT @Var = 'brook|456|US'
SELECT SPLIT(@var)
Результат:
brook
456
US
Как разбить одну строку на несколько строк?Разделить одну строку на несколько строк
DECLARE @var VARCHAR(50)
SELECT @Var = 'brook|456|US'
SELECT SPLIT(@var)
Результат:
brook
456
US
Использование таблицы индикаторную:
declare @parameter varchar(4000)
set @parameter = 'brook|456|US'
set @parameter = '|' + @parameter + '|' -- add delimiter
;with
e1 as(select 1 as N union all select 1), -- 2 rows
e2 as(select 1 as N from e1 as a, e1 as b), -- 4 rows
e3 as(select 1 as N from e2 as a, e2 as b), -- 16 rows
e4 as(select 1 as N from e3 as a, e3 as b), -- 256 rows
tally as (select row_number() over(order by N) as N from e4
)
select
substring(@parameter, N+1, charindex('|', @parameter, N+1) - N-1)
from tally
where
N < len(@parameter)
and substring(@parameter, N, 1) ='|'
Попробуйте это. Вам нужно создать Table Valed Function
а не Scalar Function
CREATE FUNCTION dbo.Split (@ip_string VARCHAR(5000),@delimiter char(1))
returns TABLE
AS
RETURN
(SELECT Split.a.value('.', 'VARCHAR(100)') Split_col
FROM (SELECT Cast ('<M>' + Replace(@ip_string, @delimiter, '</M><M>')
+ '</M>' AS XML) AS Data) AS A
CROSS APPLY Data.nodes ('/M') AS Split(a))
go
DECLARE @var VARCHAR(50)
SELECT @Var = 'brook|456|US'
SELECT * FROM dbo.Split(@var,'|')
Выход:
+===========+
| Split_col |
+===========+
| brook |
+-----------+
| 456 |
+-----------+
| US |
+-----------+
http://sqlperformance.com/2012/07/t-sql-queries/split-strings & Http: //sqlperformance.com/2012/08/t-sql-queries/splitting-strings-now-with-less-t-sql –