Добрый день.
Подскажите, пожалуйста, как нужно правильно конвертировать NREC в MS SQL?
Есть запрос:
SELECT convert(varchar, n.f$NRec) as TST FROM t$NastrOS n WHERE n.f$TIDK=15 and n.f$Name='Национальный'
В этом случае запрос возвращает какой то один непонятный символ.
Если написать convert(int, n.f$NRec) - то выдает значение 2, когда:
NRec=0000000000000002h
NRec=0001000000000002h
т.е. значение не уникально. Конвертировать нужно, чтобы задать условие по NRec в конструкции WHERE.
Заранее, огромное спасибо.
Конвертация NRec (MS SQL)
Модераторы: m0p3e, edward_K, Модераторы
Re: Конвертация NRec (MS SQL)
У нас используется такая UDF:
Код: Выделить всё
CREATE FUNCTION fnNRecToID(@NRec VARBINARY(8))
RETURNS BIGINT
BEGIN
DECLARE @Result BIGINT
IF ISNULL(@NREC, 0) != 0
SELECT @Result = CONVERT(BIGINT, @NRec) - CONVERT(BIGINT, 0x8000000000000000)
ELSE
SELECT @Result = 0
RETURN(@Result)
END
-
- Местный житель
- Сообщения: 1089
- Зарегистрирован: 04 сен 2008, 11:27
- Откуда: Москва
- Контактная информация:
Re: Конвертация NRec (MS SQL)
Код: Выделить всё
да да .. наш вариант
CAST(F$NREC as bigint) - cast(0x8000000000000000 as BIGINT) as NREC,
Время ведет!
-
- Местный житель
- Сообщения: 1089
- Зарегистрирован: 04 сен 2008, 11:27
- Откуда: Москва
- Контактная информация:
Re: Конвертация NRec (MS SQL)
Но есть проблема - на некоторых данных это преобразование сыпется ...
например если nRec = 0x7FFFFFFFFFFFFFFF
например если nRec = 0x7FFFFFFFFFFFFFFF
Время ведет!
Re: Конвертация NRec (MS SQL)
Огромное спасибо! Работает!
У нас я таких гигантских NRec'ов не встречал пока.
А может быть знаете еще как можно получить значение MEMO? Есть таблица t$ALLMEMO, вывожу из нее поле f$MEM, а выводится либо "ИСТИНА" либо ничего. Читал где-то тут, что все мемо лежат в таблице xx$MEMO, но как их связать и как оттуда получить данные непонятно.
У нас я таких гигантских NRec'ов не встречал пока.
А может быть знаете еще как можно получить значение MEMO? Есть таблица t$ALLMEMO, вывожу из нее поле f$MEM, а выводится либо "ИСТИНА" либо ничего. Читал где-то тут, что все мемо лежат в таблице xx$MEMO, но как их связать и как оттуда получить данные непонятно.
-
- Местный житель
- Сообщения: 1089
- Зарегистрирован: 04 сен 2008, 11:27
- Откуда: Москва
- Контактная информация:
Re: Конвертация NRec (MS SQL)
код не дам .. хз где он .. но направление укажу ... делал давно но вряд ли щас чего то поменялось
получаете поле мемо .. через Cast его в char(500) ну или сколько вам там понравиться - далее посимвольно перекодируете в нужную кодировку ... как то так...
получаете поле мемо .. через Cast его в char(500) ну или сколько вам там понравиться - далее посимвольно перекодируете в нужную кодировку ... как то так...
Время ведет!