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

declare @Movement xml
set @Movement='<Movement>
  <Item DATETIME_ACTION="2009-10-26T08:00:00" PRODUCT_NO="5751" HASH_VALUE="136505033925854" ROWID_NO="123553698123669" WEIGHT="14.000" VALUE="25302.12" DIRECTION_ENM="1" VALUE2="26507.76" />
  <Item DATETIME_ACTION="2009-10-26T08:00:00" PRODUCT_NO="5727" HASH_VALUE="136" ROWID_NO="74063269774224" WEIGHT="14.000" VALUE="0.00" DIRECTION_ENM="2" VALUE2="0.00" />
</Movement>'

declare @CurrHash bigint
set @CurrHash=136505033925854
select   @Movement.query('Movement/Item[@HASH_VALUE=sql:variable("@CurrHash")]')

set @CurrHash=136
select   @Movement.query('Movement/Item[@HASH_VALUE=sql:variable("@CurrHash")]')


Первый ничего не возвращает, а второй работает. Как быть? СКЛ сервер версии

Microsoft SQL Server 2005 - 9.00.4035.00 (X64) Nov 24 2008 16:17:31 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 1)
8 дек 09, 13:34    [8034453]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с ХМЛ  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3197
Я думаю, проблема как всегда в кривой дефолтной типизации бигинта:
select t.c.query('.')
from @movement.nodes('/Movement/Item') t(c)
where t.c.value('./@HASH_VALUE', 'bigint') in (
	136505033925854,
	136
);
8 дек 09, 13:39    [8034525]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с ХМЛ  [new]
Int23
Guest
Я решил по другому.

declare @CurrHash varchar(20)

Только у меня такого кода много. И где будет в следующий раз ошибка, вот это вопрос.
8 дек 09, 13:43    [8034567]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с ХМЛ  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3197
Ну, если вам не нужен интервальный поиск между двумя значениями чисел, то со строкой будет проще.
8 дек 09, 13:45    [8034594]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с ХМЛ  [new]
Int23
Guest
Поиск только по одному хэшу
8 дек 09, 13:49    [8034638]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить