Конвертация NRec (MS SQL)

Администрирование баз данных (Pervasive.SQL, MS SQL, Oracle, утилита Support)

Модераторы: m0p3e, edward_K, Модераторы

Ответить
bezpal
Сообщения: 10
Зарегистрирован: 09 мар 2010, 12:46

Конвертация NRec (MS SQL)

Сообщение bezpal »

Добрый день.

Подскажите, пожалуйста, как нужно правильно конвертировать 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.

Заранее, огромное спасибо.
Polimer
Местный житель
Сообщения: 489
Зарегистрирован: 27 янв 2006, 12:46
Откуда: Москва

Re: Конвертация NRec (MS SQL)

Сообщение Polimer »

У нас используется такая 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
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Конвертация NRec (MS SQL)

Сообщение Masygreen »

Код: Выделить всё

да да .. наш вариант
CAST(F$NREC as bigint) - cast(0x8000000000000000 as BIGINT) as NREC,
Время ведет!
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Конвертация NRec (MS SQL)

Сообщение Masygreen »

Но есть проблема - на некоторых данных это преобразование сыпется ...
например если nRec = 0x7FFFFFFFFFFFFFFF
Время ведет!
bezpal
Сообщения: 10
Зарегистрирован: 09 мар 2010, 12:46

Re: Конвертация NRec (MS SQL)

Сообщение bezpal »

Огромное спасибо! Работает!

У нас я таких гигантских NRec'ов не встречал пока.

А может быть знаете еще как можно получить значение MEMO? Есть таблица t$ALLMEMO, вывожу из нее поле f$MEM, а выводится либо "ИСТИНА" либо ничего. Читал где-то тут, что все мемо лежат в таблице xx$MEMO, но как их связать и как оттуда получить данные непонятно.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Конвертация NRec (MS SQL)

Сообщение Masygreen »

код не дам .. хз где он .. но направление укажу ... делал давно но вряд ли щас чего то поменялось
получаете поле мемо .. через Cast его в char(500) ну или сколько вам там понравиться - далее посимвольно перекодируете в нужную кодировку ... как то так...
Время ведет!
Ответить