![]() |
|
v7: Самая длинная строка в таблице значений | ☑ | ||
---|---|---|---|---|
0
DCKiller
16.11.11
✎
11:35
|
Имеется таблица значений, полученная в результате выполнения прямого запроса к некоторому справочнику, и содержащая значения всех реквизитов этого справочника (база SQL, так что строки неогр. длины тоже будут тут же). Вопрос: можно ли как-то среди этих самых строк в одной колонке определить самую длинную, без перебора строк ТЗ, или нет?
|
|||
1
Ёпрст
гуру
16.11.11
✎
11:38
|
можно. В самом прямом запросе.
|
|||
2
SnarkHunter
16.11.11
✎
11:38
|
Возможно.
|
|||
3
DCKiller
16.11.11
✎
11:39
|
(1) что за функция?
|
|||
4
DCKiller
16.11.11
✎
11:39
|
+3 или скрипт на скуле ваять
|
|||
5
Origin
16.11.11
✎
11:40
|
в запросе, 2 источника, и сравнение строк по длине
|
|||
6
Origin
16.11.11
✎
11:41
|
таблицу саму с собой сравнивай
|
|||
7
Ёпрст
гуру
16.11.11
✎
11:41
|
(3) LEN ( string_expression )
|
|||
8
Ёпрст
гуру
16.11.11
✎
11:41
|
+7 ну и + Max и привет.
|
|||
9
SnarkHunter
16.11.11
✎
11:46
|
(5)Месье знает толк в извращениях...
|
|||
10
DCKiller
16.11.11
✎
12:00
|
(7), (8) спс, нашел уже.
|
|||
11
DCKiller
16.11.11
✎
12:16
|
Почему ругается 'Argument data type text is invalid for argument 1 of len function'?
Из-за того, что строка пустая? |
|||
12
skunk
16.11.11
✎
12:19
|
Datalength()
|
|||
13
DCKiller
16.11.11
✎
12:21
|
(12) Неожиданно! Сэнкс...
|
|||
14
Mikeware
16.11.11
✎
12:34
|
(13) открой для себя BOL
|
|||
15
skunk
16.11.11
✎
12:50
|
||||
16
DCKiller
16.11.11
✎
13:06
|
(14) Открывал, там про эту функцию почему-то ни слова.
|
|||
17
Ёпрст
гуру
16.11.11
✎
13:07
|
||||
18
trad
16.11.11
✎
13:14
|
(8)
т.к. определить нужно не длину самой длинной строки, а саму строку, то нужно не max(), а top 1 и order by |
|||
19
Ёпрст
гуру
16.11.11
✎
13:17
|
(18) Да ? хз, я понял как именно длину..
:( С тобой на бентли не насобираешь |
|||
20
DCKiller
16.11.11
✎
13:26
|
(18) Вообще-то нужно было узнать именно длину самой длинной строки :) Возможно, я в топике не совсем понятно выразился. Тем не менее, тоже спасибо за совет.
|
|||
21
trad
16.11.11
✎
13:57
|
вот так вот часто.
один спрашивает не то что спросить хотел. другой отвечает не то что спрашивали. ... так и живем :( |
|||
22
trad
16.11.11
✎
13:57
|
минус на минус = плюс
|
|||
23
DCKiller
18.11.11
✎
09:10
|
Теперь возник такой вопрос. И опять-таки про длину строк...
В базе1 делается запрос к таблице _1SConst, результаты которого выгружаются в ТЗ. Затем производится прямое подключение к базе2, создается еще один объект типа ODBCRecordSet "Запрос1" для записи данных в нее. Идет создание и подготовка ВТ: ТекстЗапросаСоздатьТаблицу = "CREATE TABLE #TConst(OBJID char(9), ID int, DATE datetime, VALUE varchar(255), DOCID char(9), TIME int, ACTNO int, LINENO_ int, TVALUE char(3))"; Рез = Запрос1.Выполнить(ТекстЗапросаСоздатьТаблицу); ТекстЗапросаПодготовить = "INSERT INTO #TConst(OBJID, ID, DATE, VALUE, DOCID, TIME, ACTNO, LINENO_, TVALUE) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)" Рез = Запрос1.Подготовить(ТекстЗапросаПодготовить); Обе команды выполняются успешно, и в первом, и во втором случае Рез = 1. НО! Когда идет выполнение Запрос1.ВыполнитьSQL_ИзТЗ(РезультатЗапроса); Вываливается ошибка "Усечение данных строки справа". Что за глюк? |
|||
24
Ёпрст
гуру
18.11.11
✎
09:34
|
разве что номер строки имеет тип tinyint
|
|||
25
Ёпрст
гуру
18.11.11
✎
09:36
|
или smallint, не помню ужо
|
|||
26
DCKiller
18.11.11
✎
09:36
|
(24) Думаешь, дело в нем? SQL 2000 этот тип понимает?
|
|||
27
DCKiller
18.11.11
✎
09:37
|
(25) нет, tinyint
|
|||
28
Ёпрст
гуру
18.11.11
✎
09:40
|
и это, нафига тебе 2 запроса, когда надо всё делать в одном !
Без выгрузки ТЗ. Если че. |
|||
29
DCKiller
18.11.11
✎
10:01
|
(28) Даже если данные выбираются из одной базы, а записываются в другую?!
|
|||
30
Ёпрст
гуру
18.11.11
✎
10:05
|
(29) ну да.
|
|||
31
DCKiller
18.11.11
✎
10:07
|
(30) Ну покажи, как это в одном сделать. Или в запросах 1С++ есть что-то вроде восьмерочных пакетов?
|
|||
32
Mikeware
18.11.11
✎
10:08
|
(31) Это стандартная возможность SQL.
|
|||
33
DCKiller
18.11.11
✎
10:10
|
(32) Как он поймет, что таблица _1SConst, в которую производится запись - это таблица базы2, а не базы1, если все делаться будет одним запросом?
|
|||
34
Ёпрст
гуру
18.11.11
✎
10:12
|
(33) :)))
в тексте запроса укажешь имя базы схему и нужную табличку в ней. |
|||
35
DCKiller
18.11.11
✎
10:14
|
(34) Это как "[Database2].[dbo]._1SConst"? не?
|
|||
36
Ёпрст
гуру
18.11.11
✎
10:15
|
догадливый
|
|||
37
DCKiller
18.11.11
✎
10:15
|
(36) :)))
|
|||
38
DCKiller
18.11.11
✎
10:16
|
(36) И тогда проблема усечения строки отпадет?
|
|||
39
Ёпрст
гуру
18.11.11
✎
10:16
|
мот еще правда прилинковать сервак придется
|
|||
40
Ёпрст
гуру
18.11.11
✎
10:16
|
(38) да
|
|||
41
DCKiller
18.11.11
✎
10:16
|
(39) Сервер один и тот же
|
|||
42
Ёпрст
гуру
18.11.11
✎
10:18
|
тока лучше вообще DTS использовать
|
|||
43
Ёпрст
гуру
18.11.11
✎
10:19
|
(41) тем проще.
|
|||
44
DCKiller
18.11.11
✎
10:19
|
(42) Где почитать?
|
|||
45
Ёпрст
гуру
18.11.11
✎
10:25
|
||||
46
DCKiller
18.11.11
✎
10:31
|
(45) Благодарю, посмотрим :)
|
|||
47
DCKiller
18.11.11
✎
10:48
|
А вот еще вопрос: как в файловой базе с помощью 1С++ таким же образом переносить данные? Многие SQL-фишки тут уже не прокатят, по типу тех, о которых шла сейчас речь. Или может, лучше будет АДО использовать?
|
|||
48
Ёпрст
гуру
18.11.11
✎
12:26
|
(47) всё тоже самое, используешь фоксовый провайдер и привет..
Те же запросы к любым базам в 1 запросе. Те же update\insert |
|||
49
DCKiller
18.11.11
✎
13:22
|
(48) ну там я так понял, диалект другой несколько?
|
|||
50
Ёпрст
гуру
18.11.11
✎
13:23
|
(49) синтаксис немного другой. и всё.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |