|
Условие в ms sql | ☑ | ||
---|---|---|---|---|
0
gosn1ck
17.01.18
✎
10:21
|
Всем привет!
подскажите, как в ms sql сделать аналог следующего условия? ГДЕ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровИзПереработки а именно преобразовать вид сравнение "ССЫЛКА" |
|||
1
Asakra
17.01.18
✎
10:34
|
(0) как-то так: where tab.Регистратор = 0x000000DB
|
|||
2
Ненавижу 1С
гуру
17.01.18
✎
10:43
|
where _RecorderTRef=0x0000227A
|
|||
3
gosn1ck
17.01.18
✎
10:52
|
спасибо, а что такое 0x0000227A? это же не строке верно? как указать это значение?
подключаюсь к базе как к внешнему источнику |
|||
4
Asakra
17.01.18
✎
11:02
|
||||
5
AlfaDog
17.01.18
✎
11:06
|
Where tab.Регистратор in (select guid from таблица документа)
|
|||
6
MrStomak
17.01.18
✎
11:09
|
(5)
Ты воистину опасный человек! |
|||
7
Ёпрст
17.01.18
✎
11:10
|
(0)
_RecorderRRef - регистратор RecorderTRef - тип ссылки регистратора, длина 4 байта, хранит идентификатор типа документа-регистратора в шестнадцатеричном виде. например, 0x0000008F - это 143 в десятичной, т.е тип документа_Document143 т.е тебе нужно найти имя таблички нужного типа и перевести его название (цифровую часть) в 16-ое число. Усё ЗЫ: Имя таблички получаешь из получаешь ПолучитьСтруктуруХраненияБазыДанных |
|||
8
бомболюк
17.01.18
✎
11:23
|
(7) проще в условии писать
where cast(RecorderTRef as int) = 143 ;-) |
|||
9
MrStomak
17.01.18
✎
11:25
|
(8)
Проще. Но совсем не факт, что MS SQL при этом сможет использовать индекс ByRecorder. А вот в варианте (7) проблем с этим не будет точно. |
|||
10
бомболюк
17.01.18
✎
11:28
|
(9) ну тогда так
where RecorderTRef = cast(143 as binary(4)) |
|||
11
MrStomak
17.01.18
✎
11:35
|
(10)
Щас посмотрел, да, так работает. Только не забывать еще условие по разделителю всегда ставить. |
|||
12
gosn1ck
17.01.18
✎
11:47
|
всем спасибо, но у меня чёртов внешний источник данных. и как применить к нему функцию cast я пока не сообразил :(
видимо сбил вас с толку заголовком с ms sql |
|||
13
бомболюк
17.01.18
✎
11:52
|
(12) попробуй, может и без cast проканать. просто
where RecorderTRef = 143 |
|||
14
arsik
гуру
17.01.18
✎
11:59
|
(13) Можно прямо так записать "where RecorderTRef = 0x0000008F"
Только перед этим нужно 143 в 16ричный превратить |
|||
15
бомболюк
17.01.18
✎
12:02
|
(14) вариант в (13) в ms sql работает, ничего переводить не надо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |