MSSQL spécifie le délimiteur pour générer un ensemble de données

DECLARE 
    @xml  VARCHAR ( MAX ) = ' Brossage : 1 
Rétrécissement: 2 
Broyage à sec: 3 
Frottement humide: 4 
Solidité au lavage: 5 
Sensation: 6 
Imperméable: 7 
PH: 8 
Exposition au soleil: 9 ' 

SET  @xml =  ' < root> ' + CHAR ( 10 ) + ' <r> <v> ' + REPLACE ( REPLACE ( @xml , CHAR ( 10 ), ' </ v1> </ r> ' + CHAR ( 13 ) +' <r> <v> ' ), ' ' , ' </v> <v1> ' ) + ' </v1> </r> ' + CHAR ( 10 ) + ' </root> ' 
BEGIN TRY 

DECLARE 
    @ xml2 XML =  @xml 
    
SELECT  *  FROM (    
 SELECT tvquery ( ' . ' ) .value ( ' / r [1] / v [1] ' , ' varchar (50) ') comme  gy,
       tvquery (' . ' ) .value ( ' / r [1] / v1 [1] ' , ' varchar (50) ' ) as gyyq
 FROM  @ xml2 .nodes ( ' / root / r ' ) t (v)) a 
PIVOT ( MAX (gyyq) FOR gy IN ( [ Brushed ] , [ Shrinkage ] , [ Dry Grind ] , [ Wet Rub ] , [ Solidité au lavage ] , [ Feel ] , [ Waterproof ] , [ PH ] , [ Sunlight ] )) AS pvt
 END TRY
 BEGIN CATCH
     IF  @@ ERROR > 0 
        SELECT  NULL  AS  [ Brushed ] , NULL  AS  [ Shrinkage ] , NULL  AS  [ Dry Grind ] , NULL  AS  [ Frottement humide ] , NULL  AS  [ solidité au lavage ] , NULL  AS  [Feel ] ,NULL  AS  [ Waterproof ] , NULL  AS  [ PH ] , NULL  AS  [ Sunlight ] 
              , ERROR_MESSAGE ()    
END CATCH --Le 

cas illustré ici est pour plusieurs colonnes

Je suppose que tu aimes

Origine www.cnblogs.com/BTag/p/12699696.html
conseillé
Classement