![]() |
![]() |
![]() |
|
v8: Как определить длину строки в запросе? | ☑ | ||
---|---|---|---|---|
0
Виталий
11.06.10
✎
11:44
|
Подскажите, пож., есть ли в языке запросов функция определения длины текстового поля, по аналогии с len в TSQL? Если нет, то как тогда можно определить длину поля?
|
|||
1
IronDemon
11.06.10
✎
11:44
|
Зачем?
|
|||
2
Ненавижу 1С
гуру
11.06.10
✎
11:44
|
(0) нет, определить на клиенте
|
|||
3
Виталий
11.06.10
✎
11:45
|
(1) Нужно отфильтровать записи по длине значения в одном реквизите
|
|||
4
Maxus43
11.06.10
✎
11:46
|
(3) в запросе никак, отфильтруй уже в результате запроса выкинутого в ТЗ например
|
|||
5
Виталий
11.06.10
✎
11:47
|
(2)(4) Ясно, спасибо!
|
|||
6
Живой Ископаемый
11.06.10
✎
11:54
|
2(3) если в качестве СУБД используется не ДБ2, то можно при помощи
"ПОДОБНО [_столько подчеркиваний, сколько символов в строке__]" |
|||
7
Живой Ископаемый
11.06.10
✎
11:55
|
а, или даже в ДБ2 будет такое рабоать
|
|||
8
Виталий
11.06.10
✎
11:57
|
(6) Это тема! Мозг! :)
|
|||
9
Живой Ископаемый
11.06.10
✎
12:01
|
(8) НАДмозг, ага. :)
только вроде без квадратных скобок просто вот так "ПОДОБНО _столько подчеркиваний, сколько символов в строке__" ==== Оператор проверки строки на подобие шаблону Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ. Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки: % (процент): последовательность, содержащая любое количество произвольных символов _ (подчеркивание): один произвольный символ […] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона. [^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки. Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ. Например, шаблон “%АБВ[0-9][абвг]\_абв%” СПЕЦСИМВОЛ “\” означает подстроку, состоящую из последовательности символов: буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в. Причем перед этой последовательностью может располагаться произвольный набор символов. |
|||
10
Maxus43
11.06.10
✎
12:02
|
(6) прикольно, не пришло в голову использование этого для этого (0).)
|
|||
11
Живой Ископаемый
11.06.10
✎
12:04
|
2(10) я просто как-то, когда искал вопросы для собеседования, нашел такую задачку:
как запросом отобрать элементы справочника номенклатуры, в наименовании которых 3 слова (то есть если два слова или четыре - то не нужно...) |
|||
12
Виталий
11.06.10
✎
12:05
|
(9) Ну, ты меня что ли совсем за юзера считаешь? :) Я с SQL 2,5 года работал. Это я с 1С только недавно начал дружить :) Поэтому я понимаю как работает ПОДОБНО :)
|
|||
13
Elena_KR
11.06.10
✎
12:05
|
а если нужно знать именно длину поля?
|
|||
14
Живой Ископаемый
11.06.10
✎
12:05
|
2(12) это я для себя. :)
|
|||
15
luns
11.06.10
✎
12:07
|
(11) ха. недавно в одном тесте была такая задача.
|
|||
16
Виталий
11.06.10
✎
12:08
|
Не ожидал, что проблема так всем близка :)
|
|||
17
Живой Ископаемый
11.06.10
✎
12:08
|
2(15) вот из них кажется и брал.
|
|||
18
Виталий
11.06.10
✎
12:09
|
(13) Подозреваю, что это уже нужно делать после выполнения запроса
|
|||
19
Живой Ископаемый
11.06.10
✎
12:10
|
2(16) просто когда только начал изучать в8 решил написать конфу, в которой бы хранились художественные тексты на английском языке, и к которым можно было бы строить запросы с ПОДОБНо чтобы искать примеры употребления тех или иных слов.
|
|||
20
Elena_KR
11.06.10
✎
12:10
|
(18) как бы было хорошо, если бы была такая агрегатная функция в запросе )))
|
|||
21
МихаилМ
11.06.10
✎
12:18
|
Когда Наименование = ПОДСТРОКА ( Наименование,1, 88) Тогда 88
Когда Наименование = ПОДСТРОКА ( Наименование,1, 1) Тогда 1 .... Когда Наименование = ПОДСТРОКА ( Наименование,1, 90) Тогда 90 Когда Наименование = ПОДСТРОКА ( Наименование,1, 91) Тогда 91 Когда Наименование = ПОДСТРОКА ( Наименование,1, 92) Тогда 92 Когда Наименование = ПОДСТРОКА ( Наименование,1, 93) Тогда 93 Когда Наименование = ПОДСТРОКА ( Наименование,1, 94) Тогда 94 Когда Наименование = ПОДСТРОКА ( Наименование,1, 95) Тогда 95 Когда Наименование = ПОДСТРОКА ( Наименование,1, 96) Тогда 96 Когда Наименование = ПОДСТРОКА ( Наименование,1, 97) Тогда 97 Когда Наименование = ПОДСТРОКА ( Наименование,1, 98) Тогда 98 Когда Наименование = ПОДСТРОКА ( Наименование,1, 99) Тогда 99 Когда Наименование = ПОДСТРОКА ( Наименование,1, 100) Тогда 100 |
|||
22
luns
11.06.10
✎
12:28
|
(21) Ага а когда
Когда Наименование > ПОДСТРОКА ( Наименование,1, 100) Тогда "хз. слишком большое число" |
|||
23
Maxus43
11.06.10
✎
12:28
|
(20) а зачем? такие задачки очень редки, и можно просто в коде результат запроса обработать...
|
|||
24
Jstunner
11.06.10
✎
12:28
|
(21) все таки интересный этот язык запросов, но когда вот так вот, простейшие вещи можно сделать только через задницу, начинаешь понимать Ненавижу 1С
|
|||
25
Maxus43
11.06.10
✎
12:31
|
(24) Запрос есть Запрос, получает данные, изврат типа (0) - редко и вроде и не надо даже делать именно в запросе... Протестую против захламления языка запросов ненужными функциями!
|
|||
26
Maxus43
11.06.10
✎
12:35
|
(25) + итак умудряются такие запросы писать, что хочется выкинуться из окна, а если дать ещё и кучу функций ненужных...
|
|||
27
Живой Ископаемый
11.06.10
✎
12:38
|
2(22) а что больше - "я" или "аа"?
|
|||
28
vladnet
11.06.10
✎
12:41
|
(21) сейчас пришло в голову что тоже самое можно сделать бинарным делением пополам, тогда будет меньше условий )
|
|||
29
Elena_KR
11.06.10
✎
13:00
|
(23) редки, но метки. Я с позиций написания СКД-шных отчетов, запихнул запрос и все гуд
|
|||
30
acsent
11.06.10
✎
13:02
|
(28) Меньше не будет, будет просто дерево кустистое
|
|||
31
Ахиллес
11.06.10
✎
13:04
|
(26) почему в TSQL эти функции нужные, а в 1С оказались не нужные?
|
|||
32
acsent
11.06.10
✎
13:05
|
(31) В 1С посчитали подругому
|
|||
33
acsent
11.06.10
✎
13:06
|
(31) Можно примеры, когда они нужные?
|
|||
34
Elena_KR
11.06.10
✎
13:06
|
(31) решили не заморачиваться наверное
|
|||
35
Ахиллес
11.06.10
✎
13:07
|
(33) Не ко мне вопрос. Не я же TSQL создавал. Если есть, значит были основания для включения в язык.
|
|||
36
hhhh
11.06.10
✎
13:11
|
(31) разные задачи перед собой ставили разработчики TSQL и 1С.
|
|||
37
Ахиллес
11.06.10
✎
13:12
|
(34) Вот в это поверю. Кишка тонка оказалась, решили не заморачиваться.
|
|||
38
Ахиллес
11.06.10
✎
13:12
|
(36) Я сейчас только о реализации SQL языка в восьмерке.
|
|||
39
hhhh
11.06.10
✎
13:22
|
(38) вы просто забыли о самом главном. Должна быть полная совместимость SQL- и файловой версии 1С.
|
|||
40
vladnet
11.06.10
✎
13:24
|
(30) Да но должно быть быстрее, хотя кто его знает как SQL работает
Впрочем я тестировал вариант такие запросы писать, в итоге решил что это плохо - быстродействие падает в разы, так что проще на клиенте обработать. |
|||
41
Виталий
11.06.10
✎
13:31
|
По поводу высказываний, что многие функции в 1С не нужны, что можно заморочится сложным построением запроса - и все будет работать... Но вы забываете, что в таких случаях перестают работать индексы. В итоге страдает скорость выполнения запросов. Иначе - нужно усложнять логику кода 1С, что бы обработать результат запроса. Тоже не вариант. Поэтому, соглашусь с тем, что это минус для 1С
|
|||
42
Живой Ископаемый
11.06.10
✎
15:34
|
на самом деле неужно помнить что 1С - для автоматизации прежде всего финансового учета...
Придумайте реальную учетную задачу, когда бы нам понадобилось - что? сгруппировать данные по длине наименования? это вообще смешно.. Если у вас от длины наименования зависит бизнес-логи - вряд ли это правильно... Нужно нормализовать это как-то... А нормализовать - это один раз написать и выполнить обработку. |
|||
43
acsent
11.06.10
✎
15:36
|
Если от длины поля что-то зависит, то добавь доп. реквизит: длина
|
|||
44
Живой Ископаемый
11.06.10
✎
15:39
|
2(43)вот-вот. это и имел в виду.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |