|
v7: Поиск по подстроке прямым запросом | ☑ | ||
---|---|---|---|---|
0
Fiasko
16.11.12
✎
00:06
|
Господа, а это вообще реализуемо? Делал кто-нибудь подобное? Хотел оптимизировать типовой "ПодборОбъектов", но что-то засомневался... Может я просто sql-язык плохо знаю..
|
|||
1
Азат
16.11.12
✎
00:07
|
а чем тебе LIKE '%ТВОЯСТРОКА%' не катит?
|
|||
2
exchang
16.11.12
✎
00:08
|
(1) exactly
|
|||
3
Fiasko
16.11.12
✎
00:10
|
понял, буду пытаться.. спасибо
|
|||
4
Fiasko
17.11.12
✎
16:13
|
Запрос работает, когда я непосредственно запускаю его с фильтром с конкрентным значением, а хотелось бы получать данные с фильтром по переменной.. Запрос, приведенный ниже, ничего не находит..
стрПоиска = "efg"; Запрос.УстановитьТекстовыйПараметр("Подстрока",стрПоиска); ТекстЗапроса = " |SELECT | Спр.ID as [Номенклатура $Справочник.Номенклатура], | Спр.Code as Код, | Спр.PARENTID as [Производитель $Справочник.Номенклатура], | Спр.Descr as Наименование, | $Спр.КатНомер as КатНомер |FROM | $Справочник.Номенклатура as Спр |WHERE $Спр.КатНомер LIKE '%Подстрока%' |" ; Подскажите, пожалуйста :) |
|||
5
Злопчинский
17.11.12
✎
16:27
|
|WHERE $Спр."+имяРеквизита+" LIKE
|
|||
6
Fiasko
17.11.12
✎
16:29
|
не, наоборот, переменная после like должна быть..
|
|||
7
ADirks
17.11.12
✎
16:30
|
'%'+:Подстрока+'%'
|
|||
8
Fiasko
17.11.12
✎
16:33
|
точно! Спасибо :)
|
|||
9
Злопчинский
17.11.12
✎
16:37
|
//======================================================================
Функция ПоискПоПодстрокеSQlite() Попытка глВКлайт.Открыть(":memory:"); Запрос = глВКлайт.НовыйЗапрос(); Запрос.ВыполнитьЗапрос("create virtual table Товары using dbeng(Справочник.Номенклатура)"); Исключение //тОшибка = "инфо: проблема при выполнении запроса инициализации вирт.таблицы, при случае - сообщите программисту: "+ОписаниеОшибки(); //Сообщить(тОшибка); Возврат 0; КонецПопытки; РазбиваемаяСтрока = ПодСтрокаПоиска; РазбиваемаяСтрока = СтрЗаменить(РазбиваемаяСтрока,"'",""); РазбиваемаяСтрока = СтрЗаменить(РазбиваемаяСтрока,"""",""); РазбиваемаяСтрока = СтрЗаменить(СокрЛП(РазбиваемаяСтрока)," ",РазделительСтрок); ТекстЗапроса = "SELECT |Товары.id [Элемент :Справочник.Номенклатура] |FROM Товары |WHERE Товары.isfolder=2 and Товары.ismark <> '*'"; Для Индекс = 1 По СтрКоличествоСтрок(РазбиваемаяСтрока) Цикл Слово = Врег(СтрПолучитьСтроку(РазбиваемаяСтрока,Индекс)); Если ПустоеЗначение(Слово)=1 Тогда Продолжить; КонецЕсли; ТекстЗапроса = ТекстЗапроса+" |AND UPPER(Товары.descr) LIKE '%"+Слово+"%'"; КонецЦикла; //ТекстЗапроса = ТекстЗапроса+" //|ORDER BY Элемент.descr"; ТЗраб = СоздатьОбъект("ТаблицаЗначений"); Попытка _время1 = _GetPerformanceCounter(); Запрос.ВыполнитьЗапрос(ТекстЗапроса).Выгрузить(ТЗраб); Исключение глВКлайт.Закрыть(); тОшибка = "ошибка при выполнении запроса, сообщите программисту: "+ОписаниеОшибки(); Сообщить(тОшибка); Возврат 0; КонецПопытки; глВКлайт.Закрыть(); |
|||
10
Fiasko
17.11.12
✎
16:39
|
(9) полезная штука, однозначно
|
|||
11
Fiasko
17.11.12
✎
16:39
|
(9) шпасиб :)
|
|||
12
Злопчинский
17.11.12
✎
16:44
|
это мелкий допил штатной тисовской ВыборИзСправочникаПоПодстроке
. есть более продвинутые варианты, на том же ИС |
|||
13
Fiasko
18.11.12
✎
18:18
|
блиииин... а если есть список значений подстрок, по которому и нужно найти элементы, как тут лучше поступить? через уложитьсписокобъектов? или дополнять текстзапроса по списку?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |