Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подскажите по запросу в XML  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
есть поле хмл, в нем в разных местах могут быть поля link, я выбираю их и собираю в одну запись с разделителем |

<link value="\\192.168.0.1\vol02" />



select id,tstamp, xmldata.query('for $i in (*//link) return <A>{data($i/@value)}|</A>').value('.','nvarchar(max)')
from v_links


но есть одна проблема: если скажем в хмл есть три поля

<link value="\\192.168.0.1\vol02" />
<link value="" />
<link value="\\192.168.0.2\vol03" />


то пустое тоже участвует, хуже когда все пустые, но пристуствуют, тогда результат будет "|||"

Как избавиться от пустых значений? Т.е. не выдавать и в запросе

Я пробовал так изменить запрос, но он работает неправильно, т.е. не выдает и непустые значения в енкоторых случаях.

select id,tstamp, xmldata.query('for $i in (*//link)  where string-length(data($i/@VALUE))>0 return <A>{data($i/@value)}|</A>').value('.','nvarchar(max)')
from v_links
2 май 13, 13:30    [14254169]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по запросу в XML  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
вопрос снят, решил по-другому, т.е.

select id,tstamp, xmldata.query('for $i in (*//link)  where (data($i/@VALUE))!="" return <A>{data($i/@value)}|</A>').value('.','nvarchar(max)')
from v_links



Но осадок остался(ц) , непонятно почему проверка длины работает как-то странно

select id,tstamp, xmldata.query('for $i in (*//link) where string-length(data($i/@VALUE))>0 return <A>{data($i/@value)}|</A>').value('.','nvarchar(max)')
from v_links
2 май 13, 14:10    [14254215]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по запросу в XML  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Winnipuh
Я пробовал так изменить запрос, но он работает неправильно, т.е. не выдает и непустые значения в енкоторых случаях.

Можно примеры таких случаев?

Winnipuh
select id,tstamp, xmldata.query('for $i in (*//link)  where string-length(data($i/@VALUE))>0 return <A>{data($i/@value)}|</A>').value('.','nvarchar(max)')
from v_links

А чой-то у вас проверяется длина одного атрибута, а возвращается значение другого?
2 май 13, 14:25    [14254232]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по запросу в XML  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Гость333
Winnipuh
Я пробовал так изменить запрос, но он работает неправильно, т.е. не выдает и непустые значения в енкоторых случаях.

Можно примеры таких случаев?

Winnipuh
select id,tstamp, xmldata.query('for $i in (*//link)  where string-length(data($i/@VALUE))>0 return <A>{data($i/@value)}|</A>').value('.','nvarchar(max)')
from v_links

А чой-то у вас проверяется длина одного атрибута, а возвращается значение другого?


это описка только здесь
2 май 13, 14:28    [14254240]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по запросу в XML  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Гость333
Winnipuh
Я пробовал так изменить запрос, но он работает неправильно, т.е. не выдает и непустые значения в енкоторых случаях.

Можно примеры таких случаев?

Winnipuh
select id,tstamp, xmldata.query('for $i in (*//link)  where string-length(data($i/@VALUE))>0 return <A>{data($i/@value)}|</A>').value('.','nvarchar(max)')
from v_links

А чой-то у вас проверяется длина одного атрибута, а возвращается значение другого?



точно! спасибо... протормозил
2 май 13, 14:30    [14254246]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить