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

Откуда: Узбекистан, Ташкент
Сообщений: 100
Всем доброе утро!!!
У меня такой вопрос - возможно ли делать выборку из xml поля по условию LIKE из этого же поля?
Пример
SELECT TOP 100 [ID]
,[SiteID]
,[Type]
,[Details]
,[RecipientID]
,[CreatorID]
,[CreateDate]
FROM [OSTC_ANJI].[ActionTracking].[SiteRecords]
WHERE Details LIKE ('%опубликовал(а) новую статью%') - а это фрагмент внутри xml-поля...
где поле Details - xml
Заранее спасибо
20 июл 09, 10:13    [7434268]     Ответить | Цитировать Сообщить модератору
 Re: Работа с XML-столбцами...  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
1) Рекомендую сперва выяснить у того, кто БД проектировал - почему это поле именно типа XML ?
2) Рекомендую подумать над результатом применения TOP без указания ORDER BY
20 июл 09, 10:19    [7434301]     Ответить | Цитировать Сообщить модератору
 Re: Работа с XML-столбцами...  [new]
AlexeyArakelov_Arik
Member

Откуда: Узбекистан, Ташкент
Сообщений: 100
Уважаемый Паганель, на счет проектирования поля именно XML-формата, поверьте это было нужно. а на счет TOP - это не столь актуально - смотрите шире, просто запрос по условию из поля типа xml...
Вопрос остается открытым - прошу помощи
20 июл 09, 10:46    [7434470]     Ответить | Цитировать Сообщить модератору
 Re: Работа с XML-столбцами...  [new]
Glory
Member

Откуда:
Сообщений: 104760
AlexeyArakelov_Arik
Уважаемый Паганель, на счет проектирования поля именно XML-формата, поверьте это было нужно.

И там типа у вас именно xml хранится ?
20 июл 09, 10:54    [7434534]     Ответить | Цитировать Сообщить модератору
 Re: Работа с XML-столбцами...  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
хорошо, посмотрим шире и подумаем - чего мы хотим добиться
приведу простейший пример (первое что приходит в голову):
declare @x1 xml, @x2 xml
set @x1 = '<root><item action="опубликовал" comment="item1"/></root>'
set @x2 = '<root><item action="прочел" comment="опубликовал"/></root>'

select '@x1 - найдено' as result1
 where cast(@x1 as varchar(max)) like '%опубликовал%'

select '@x2 - найдено' as result2
 where cast(@x2 as varchar(max)) like '%опубликовал%'

select item.value('@action', 'varchar(25)') as action1
      ,item.value('@comment', 'varchar(25)') as comment1
  from @x1.nodes('/root/item') as T(item)
 where item.value('@action', 'varchar(25)') like '%опубликовал%'

select item.value('@action', 'varchar(25)') as action2
      ,item.value('@comment', 'varchar(25)') as comment2
  from @x2.nodes('/root/item') as T(item)
 where item.value('@action', 'varchar(25)') like '%опубликовал%'


result1
-------------
@x1 - найдено

(1 row(s) affected)

result2
-------------
@x2 - найдено

(1 row(s) affected)

action1                   comment1
------------------------- -------------------------
опубликовал               item1

(1 row(s) affected)

action2                   comment2
------------------------- -------------------------

(0 row(s) affected)
Как Вы думаете, почему четвертый запрос ничего не вернул, хотя второй - вернул ?

Подумайте, действительно ли like - это то, что Вам нужно?
20 июл 09, 10:56    [7434551]     Ответить | Цитировать Сообщить модератору
 Re: Работа с XML-столбцами...  [new]
AlexeyArakelov_Arik
Member

Откуда: Узбекистан, Ташкент
Сообщений: 100
Большое спасибо
20 июл 09, 11:44    [7434883]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить