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

Как да получа съответния текст, разделен със запетая, за низ от кодове, разделени със запетая?

Може да има по-прости решения за това, но ето един начин.

Структура на таблицата

create table Locations(LocationID int, Location varchar(50))
create table OtherTable(ID int, Locations varchar(max))

Тестови данни

insert into Locations values(1, 'Location <1>')
insert into Locations values(2, 'Location <2>')
insert into Locations values(3, 'Location <3>')
insert into Locations values(4, 'Location <4>')
insert into Locations values(5, 'Location <5>')

insert into OtherTable values (1, '')
insert into OtherTable values (2, '2')
insert into OtherTable values (3, '1, 3 ,5')

Заявка

;with cte as
(
  select 
    T.ID,
    coalesce(L.Location, '') as Location
  from OtherTable as T
    cross apply
      (select cast('<r>'+replace(T.Locations, ',', '</r><r>')+'</r>' as xml)) LocXML(XMLCol)
    cross apply
      LocXML.XMLCol.nodes('r') LocID(IDCol) 
    left outer join Locations as L
      on L.LocationID = LocID.IDCol.value('.', 'int')
)
select
  C1.ID,
  stuff((select ', '+C2.Location
         from cte as C2 
         where C1.ID = C2.ID
         for xml path(''), type).value('text()[1]', 'nvarchar(max)'), 1, 2, '') as Locations
from cte as C1
group by C1.ID

Резултат

ID  Locations
--- ----------------------------------------
1   
2   Location <2>
3   Location <1>, Location <3>, Location <5>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SSIS 2008 - Получаване на текуща дата в променливи

  2. Съвети за използване на SQL Server с Salesforce SOQL

  3. Анализ на XML - Незаконен XML символ (при изпълнение на съхранена процедура, изпълняваните заявки на процедура не водят до грешки)

  4. Как да автоматизирате процеса на синхронизиране на схемата на база данни на SQL Server

  5. Най-сигурният начин да получите идентификатор на последния запис от таблица