2015-01-15 5 views
0

Это мой магазин, чтобы обработать получить данные:Использование Cross Наносить XQuery

(PromotionSetup.query('' 
for $PS in Setup/Include[@Type = ''''Product'''']/Value[text()]          
where contains($PS, ''''' + CAST(@productID AS NVARCHAR) + '_'''') or $PS = ''''' + CAST(@productID AS NVARCHAR) + ''''' 
return data($PS)   
'')).value(''(.)'', ''nvarchar(max)'') as InfoProductPromotion 

И это мой результат:

468908_3:2000; 468908_3:1000; 

Этот результат был сравнить 2 данных в одной строке. Итак, я ищу в Интернете, используя cross apply для отдельных данных в 2 строках.

Это результат я хочу:

468908_3:2000; 
468908_3:1000; 

К сожалению, я не могу себе представить, как с помощью кросс применять в XQuery. Может кто-нибудь может мне помочь?

ответ

0

Проверить это утверждение SQL, если это может помочь:

;WITH yourtable 
    AS (SELECT '468908_3:2000; 468908_3:1000;' AS yourcolumn) 

SELECT RTRIM(LTRIM(c1.value('.', 'varchar(100)'))) 
FROM (SELECT CAST('<N>' + REPLACE(yourcolumn, ';', ';</N><N>') 
        + '</N>' AS XML) 
     FROM yourtable) t(c) 
     CROSS APPLY c.nodes('/N') AS t1(c1) 
WHERE RTRIM(LTRIM(c1.value('.', 'varchar(100)'))) <> '' 
+0

я имею в виду, что, когда магазин бежать, он должен быть отсоединен данные в 2 линии по подгоняет запросу. –

Смежные вопросы