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

Как работят неща и 'For Xml Path' в SQL Server?

Ето как работи:

1. Вземете низ от XML елемент с ЗА XMLа

Добавянето на FOR XML PATH в края на заявка ви позволява да изведете резултатите от заявката като XML елементи, като името на елемента се съдържа в аргумента PATH. Например, ако трябва да изпълним следния оператор:

SELECT ',' + name 
              FROM temp1
              FOR XML PATH ('')

Чрез предаване на празен низ (ЗА XML PATH('')), вместо това получаваме следното:

,aaa,bbb,ccc,ddd,eee

2. Премахнете водещата запетая с STUFF

Инструкцията STUFF буквално "пълва" един низ в друг, като заменя знаците в първия низ. Ние обаче го използваме просто, за да премахнем първия знак от получения списък със стойности.

SELECT abc = STUFF((
            SELECT ',' + NAME
            FROM temp1
            FOR XML PATH('')
            ), 1, 1, '')
FROM temp1

Параметрите на STUFF са:

  • Низът, който трябва да бъде „напълнен“ (в нашия случай пълният списък с имена със запетая)
  • Мястото, където да започнете да изтривате и вмъквате знаци (1, ние пъхнем в празен низ)
  • Броят знаци за изтриване (1, като водеща запетая)

Така че завършваме с:

aaa,bbb,ccc,ddd,eee

3. Присъединете се към id, за да получите пълен списък

След това просто присъединяваме това към списъка с идентификатори във временната таблица, за да получим списък с идентификатори с име:

SELECT ID,  abc = STUFF(
             (SELECT ',' + name 
              FROM temp1 t1
              WHERE t1.id = t2.id
              FOR XML PATH (''))
             , 1, 1, '') from temp1 t2
group by id;

И имаме нашия резултат:

Id Име 1aaa, bbb, ccc, ddd, eee

Надявам се това да помогне!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:комбиниране на няколко реда в един ред

  2. SET срещу SELECT при присвояване на променливи?

  3. SQL Server тригери:DML тригери

  4. STRING_SPLIT() в SQL Server 2016:Продължение №2

  5. Вземете информация за изглед с изгледа на информационна схема VIEWS в SQL Server