Как выбрать с помощью ПОДОБНО непустые строки ? #245623


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