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

Разделяне на разделени стойности в SQL колона на множество редове, които използват множество разделители

Опитайте това:

Въз основа на статия от тук

;with T(id, Cols) as
(
  select 1, '10 x 1234 description1,11 x 456 description2' 
  UNION ALL
  select 2, '40 x 123478 description3,51 x 45678 description4' 
),
--first split all comma separated into different rows
CTE2 AS 
(
    SELECT id, 
    CAST(N'<H><r>' + replace(Replace(Vals.a.value('.', 'NVARCHAR(50)'),
        ' ','|'), '|', '</r><r>') + '</r></H>' as XML) Cols
    FROM
    (
    SELECT *,CAST (N'<H><r>' + Replace(cols,',','</r><r>') + 
        '</r></H>' AS XML) AS [vals]
    FROM T) d
    CROSS APPLY d.[vals].nodes('/H/r') Vals(a)
)
-- split all ' ' demilited values now
SELECT distinct id, Vals.a.value('(/H/r)[1]', 'VARCHAR(100)') AS Qty,
Vals.a.value('(/H/r)[2]', 'VARCHAR(100)') AS X,
Vals.a.value('(/H/r)[3]', 'VARCHAR(100)') AS ItemNo,
Vals.a.value('(/H/r)[4]', 'VARCHAR(100)') AS Description
FROM
(
SELECT *
FROM CTE2) d
CROSS APPLY d.[cols].nodes('/H/r') Vals(a)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да напиша съхранена процедура за вмъкване на стойности в две таблици с връзка с външен ключ?

  2. Как да запазя NULL стойности, когато използвам SSIS за импортиране от плосък файл в SQL Server 2005

  3. Как да намеря име за вход, потребителско име за база данни или роли на потребител на домейн на sqlserver, който няма собствено име за вход?

  4. Как да използвате aspnet_regsql.exe

  5. Как да ограничите достъп на потребител до обекти само от една схема в SQL Server 2008?