![]() |
![]() |
![]() |
|
Как выбрать с помощью ПОДОБНО непустые строки ? | ☑ | ||
---|---|---|---|---|
0
Murdoch
10.01.07
✎
12:45
|
Имеем спр. контрагенты, в справочнике есть реквизит ИстИнф: тип строка переменной неограниченной длины.
как выбрать все элементы этого справочника, у которых этот реквизит не пустой, т.е. заполнен хотя бы чем-то кроме пробелов. выборку нужно сделать из консоли отчетов. |
|||
1
MikleV
10.01.07
✎
12:50
|
накуй эта хрень в БЗ?
ПОДСТРОКА побпробуй. |
|||
2
Murdoch
10.01.07
✎
12:54
|
и что делать с этой ПОДСТРОКА ?
|
|||
3
rom
10.01.07
✎
12:55
|
(2)
Оператор проверки строки на подобие шаблону Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ. Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки: % (процент): последовательность, содержащая любое количество произвольных символов _ (подчеркивание): один произвольный символ […] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона. [^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки. Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ. Например, шаблон “%АБВ[0-9][абвг]\_абв%” СПЕЦСИМВОЛ “\” означает подстроку, состоящую из последовательности символов: буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в. Причем перед этой последовательностью может располагаться произвольный набор символов. |
|||
4
Murdoch
10.01.07
✎
12:55
|
это все естесственно прочитано,
вы на вопрос можете ответить ? |
|||
5
Рэйв
10.01.07
✎
12:56
|
Нафига тебе ПОДОБНО?
//---------------- Где ИстИнф<> &НепустаяСтрока Запрос.УстановитьПараметр("НепустаяСтрока",""); |
|||
6
Рэйв
10.01.07
✎
12:56
|
+(5)т.е. ПустаяСтрока:)
|
|||
7
Murdoch
10.01.07
✎
12:57
|
Рэйв
ну где я напишу в консоле отчетов фразу Запрос.УстановитьПараметр ? |
|||
8
coder1cv8
10.01.07
✎
12:58
|
+(6) тока ПОДСТРОКА надо всё-равно использовать, так сравнить не даст...
|
|||
9
Murdoch
10.01.07
✎
12:59
|
ВЫБРАТЬ
Контрагенты.Ссылка, Контрагенты.ИсточникИнформации ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.ИсточникИнформации <> &пст вот код, что подставить вместо условия ГДЕ ? т.к. то что написано - не работает в принципе.... Контрагенты.ИсточникИнформации строка неограниченной переменной длины |
|||
10
coder1cv8
10.01.07
✎
13:03
|
(9) для тех кто в танке:
ГДЕ ПОДСТРОКА(Контрагенты.ИсточникИнформации,1) <> &пст вот тока если там пробел... |
|||
11
Рэйв
10.01.07
✎
13:03
|
(7)Не знаю как у тебя в консоли отчетов, но у меня в произвольном запросе запросто хавает конструкцию
Контрагенты.ИсточникИнформации <> "" |
|||
12
rom
10.01.07
✎
13:04
|
(9) А если будет строка из пробелов?
|
|||
13
rom
10.01.07
✎
13:05
|
(10) А если будет строка с пробелом между словами?
|
|||
14
Murdoch
10.01.07
✎
13:06
|
и я о том же, нужны только строки с символами отличными от пробелов
|
|||
15
coder1cv8
10.01.07
✎
13:06
|
(12) поэтому лучше всё же лучше прикрутить здесь ПОДОБНО
|
|||
16
Murdoch
10.01.07
✎
13:08
|
может кто-то уже прикручивал ?
как этому ПОДОБНО задать условие наличия только одних пробелов в любом количестве ? или наоборот наличия всего-чего угодно, кроме пробелов. |
|||
17
coder1cv8
10.01.07
✎
13:08
|
Попробуй вот:
ГДЕ ПОДСТРОКА(Контрагенты.ИсточникИнформации,1) НЕ ПОДОБНО % |
|||
18
coder1cv8
10.01.07
✎
13:11
|
+(17) гоню немного, символов надо брать побольше! )))
|
|||
19
rom
10.01.07
✎
13:12
|
(0)(14) "у которых этот реквизит не пустой, т.е. заполнен хотя бы чем-то кроме пробелов" и "только строки с символами отличными от пробелов" это разные вещи ИМХО
|
|||
20
Murdoch
10.01.07
✎
13:14
|
для визуального восприятия человека, пробел от пустого места ничем не отличается...
|
|||
21
rom
10.01.07
✎
13:19
|
Если тебе подойдут "только строки с символами отличными от пробелов" тогда можно попробовать
ГДЕ Контрагенты.ИсточникИнформации ПОДОБНО [^ ] А если надо "у которых этот реквизит не пустой", т.е. СОКРЛП(ИсточникИнформации) = "" тогда запросом не выйдет наверное |
|||
22
Murdoch
10.01.07
✎
13:21
|
(21)
это подходит только для строк с длиной 1, и когда это единственный символ в строке не пробел :)) совсем не то |
|||
23
coder1cv8
10.01.07
✎
13:22
|
+(18) а впрочем, какая разница...
|
|||
24
Murdoch
10.01.07
✎
13:22
|
1.5 года назад я уже создавал подобный отчет... но файл давно забыт... сейчас никак не могу сообразить, что нужно сделать.
а ведь все элементарно просто... взять все строки с непустыми на человеческий взгляд значениями |
|||
25
rom
10.01.07
✎
13:23
|
А так?
ГДЕ Контрагенты.ИсточникИнформации НЕ ПОДОБНО %[ ]% |
|||
26
Murdoch
10.01.07
✎
13:25
|
ГДЕ
Контрагенты.ИсточникИнформации ПОДОБНО "%[^ ]%" вот как :))) УРАААА !!! |
|||
27
Murdoch
10.01.07
✎
13:26
|
попоробуй догадайся используя информации из ЖКК... мозги свернешь :)
|
|||
28
rom
10.01.07
✎
13:26
|
Коллективный разум рулит!
|
|||
29
Murdoch
10.01.07
✎
13:27
|
всем СПАСИБО !
|
|||
30
coder1cv8
10.01.07
✎
13:27
|
ИМХО, строки с одними пробелами никак не определить...
|
|||
31
rom
10.01.07
✎
13:28
|
Только учти что если у тебя например будет не пустая строка с пробелом то она тоже не будет выбрана
|
|||
32
rom
10.01.07
✎
13:28
|
(30) Запросом действительно не получится
|
|||
33
Murdoch
10.01.07
✎
13:28
|
мне и не нужны пробелы
|
|||
34
rom
10.01.07
✎
13:29
|
Короче строка "мне и не нужны пробелы" в твою выборку не попадет так же, как и строка " "
|
|||
35
MikleV
10.01.07
✎
13:30
|
(30) да ладно)
|
|||
36
rom
10.01.07
✎
13:30
|
(35) Если знаешь как - напиши
|
|||
37
coder1cv8
10.01.07
✎
13:32
|
(35) запросом естественно
|
|||
38
rom
10.01.07
✎
13:33
|
(37) СОКРЛП любой может проверить ;)
|
|||
39
rom
10.01.07
✎
13:35
|
(35) Нt все так просто, как кажется на первый взгляд
|
|||
40
coder1cv8
10.01.07
✎
13:36
|
(35)
Кроме что так: ПОДСТРОКА(Поле,1)<>"" И ПОДСТРОКА(Поле,1)<>" " |
|||
41
Murdoch
10.01.07
✎
13:38
|
(34) попадает
|
|||
42
rom
10.01.07
✎
13:39
|
(40) А ПОДСТРОКА работает разве не с тремя параметрами?
|
|||
43
Murdoch
10.01.07
✎
13:39
|
ВЫБРАТЬ
Контрагенты.Ссылка, Контрагенты.ИсточникИнформации ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.ИсточникИнформации ПОДОБНО "%[^ ]%" попадают все строки кроме пустых или заполненных пробелами |
|||
44
Murdoch
10.01.07
✎
13:40
|
да это неочевидно, зато работает на УРА, быстро и качественно.
|
|||
45
coder1cv8
10.01.07
✎
13:42
|
(42) ну да, забыл просто, выбираем один символ.
|
|||
46
MikleV
10.01.07
✎
13:43
|
(36) попой об косяк (С) Таня
з.ы. можно 100% |
|||
47
rom
10.01.07
✎
13:44
|
(46) Ну так напиши
|
|||
48
rom
10.01.07
✎
13:47
|
(42) Так а если символ не с первой позиции будет, например пять пробелов подряд?
|
|||
49
Murdoch
10.01.07
✎
13:52
|
я же говорю - работает :))
|
|||
50
MikleV
10.01.07
✎
13:52
|
возьмём первые двадцать символов.
ВЫБОР КОГДА на двадцать символов в строке .вот и всё. з.ы. далее неохота думать, то есть попроще делать . |
|||
51
coder1cv8
10.01.07
✎
13:53
|
(48) да я сообразил уже, что не прокатит, это так мысли в слух...
|
|||
52
Murdoch
10.01.07
✎
13:53
|
рациональное мышление и логика отказывают напрочь :))
а запрос - работает. |
|||
53
rom
10.01.07
✎
13:54
|
(50) РЖУНИМАГУ
|
|||
54
rom
10.01.07
✎
13:57
|
(52) Не понятно почему у тебя попадают строки типа "мне и не нужны пробелы". Они должны отбраковываться по моему ;)
|
|||
55
coder1cv8
10.01.07
✎
13:58
|
(50) то есть это ответ нет, т.к. мы говорим именно о строках НЕОГРАНИЧЕННОЙ длинны
(52) чудес не бывает. |
|||
56
rom
10.01.07
✎
14:00
|
(54) Реально работает. Только что проверил - не поленился! ;)
|
|||
57
coder1cv8
10.01.07
✎
14:01
|
(56) ага. до меня то же дошло, почему работает. ))
|
|||
58
coder1cv8
10.01.07
✎
14:01
|
надо запомнить...
|
|||
59
rom
10.01.07
✎
14:01
|
Оказывается разные вещи:
НЕ ПОДОБНО "%[ ]%" ПОДОБНО "%[^ ]%" |
|||
60
rom
10.01.07
✎
14:04
|
По моему это надо в базу знаний ;) Интересная штука
|
|||
61
Murdoch
10.01.07
✎
14:05
|
я уже 2й раз порекомендовал ее туда :)
|
|||
62
rom
10.01.07
✎
14:06
|
Почему же все таки это ПОДОБНО "%[^ ]%" срабатывает - никак не пойму!
|
|||
63
coder1cv8
10.01.07
✎
14:14
|
(62) подумай не много, это просто.
|
|||
64
rom
10.01.07
✎
14:28
|
Просто на самом деле это уж так SQL интерпретирует этот запрос. А вообще не поймешь как это должно работать на самом деле. Надо действительно запомнить.
Наверно у % при обработке приоритет выше чем у [^ ]. Ведь строка "мне и не нужны пробелы" и соответствует и не соответствут условию одновременно! |
|||
65
MikleV
10.01.07
✎
14:37
|
(53) бгг.. ну так работать то будет)
а про рациональность разговора не было) |
|||
66
rom
10.01.07
✎
15:27
|
(65) Со строками неограниченной длины как у автора не будет ;)
|
|||
67
MikleV
10.01.07
✎
15:42
|
(66) ты хошь сказать что ПОДСТРОКА не будет работать с такой строкой?
я имел ввиду 20 конструкций выбор когда ПОДСТРОКА "сравнение на пробел" тогда выбор когда когда :) тупо) |
|||
68
rom
10.01.07
✎
15:47
|
(67) Ноукоммент
|
|||
69
Murdoch
10.01.07
✎
15:51
|
"%[^ ]%" означает -- "все что угодно" между чем есть один "не пробел" :))
|
|||
70
Murdoch
10.01.07
✎
15:51
|
вобщем то логично :)
только, сразу, как то мимо проскакиваешь :))) |
|||
71
rom
10.01.07
✎
16:00
|
(69)(70) Я уже догнал ;)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |