Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да разделя низ в sql сървър 2008 с помощта на съхранена процедура и да вмъкна данните в таблицата

По принцип бих предложил да напишете CLR функция, която разделя низове по регулярен израз или SQL функция с таблични стойности, но във вашия случай можете да опитате нещо просто като конвертиране на вашия низ в xml и анализиране на него:

declare @str nvarchar(max) = 'date=10/10/2000|age=13^date=01/01/2001|age=12^date=02/02/2005|age=8'
declare @data xml

select @str = replace(@str, '=', '="')
select @str = replace(@str, '|', '" ')
select @str = replace(@str, '^', '"/><row ')
select @str = '<row ' + @str + '"/>'

select @data = cast(@str as xml)

select
    t.c.value('@date', 'nvarchar(max)') as [date],
    t.c.value('@age', 'nvarchar(max)') as [age]
from @data.nodes('row') as t(c)

демонстрация на sql fiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-SQL Заявка за матрична таблица за свободна позиция

  2. Защо не мога да използвам псевдоним в колона count(*) и да го позовавам в клауза за име?

  3. Искам резултат от заявка за избор в табличен формат като обобщен отчет

  4. Как да коригирате „Опцията за конфигурация „Agent XPs“ не съществува“ в SQL Server (T-SQL)

  5. Как да използвам SqlCommand за СЪЗДАВАНЕ НА БАЗА ДАННИ с параметризирано db име?