Имя: Пароль:
1C
1C 7.7
v7: Прямой запрос: строка содержит
,
0 OnePrg
 
29.12.21
12:20
Подскажите есть ли в прямых запросах аналог функции ПОДОБНО как в 1С8?

Нужно выбрать все элементы справочника, в наименовании которых есть заданная строка.
1 OnePrg
 
29.12.21
12:22
LIKE
2 OnePrg
 
29.12.21
12:28
ТекстЗапроса = "
    |SELECT
    |    спрТовары.Code as Код,
    |    спрТовары.ID as [Товар $Справочник.Номенклатура]
    |FROM
    |    $Справочник.Номенклатура as спрТовары
    |WHERE
    |  спрТовары.Name LIKE `%"+ТекстПоиска+"%`";


Неправильный синтаксис около конструкции "`".

Какой символ использовать?
3 OnePrg
 
29.12.21
12:31
ТекстЗапроса = "
    |SELECT
    |    спрТовары.Code as Код,
    |    спрТовары.ID as [Товар $Справочник.Номенклатура]
    |FROM
    |    $Справочник.Номенклатура as спрТовары
    |WHERE
    |  спрТовары.Descr LIKE '%"+ТекстПоиска+"%'";

ошибок не выдаёт, но и номенклатуру не ищет
4 acht
 
29.12.21
12:33
Что будет, если в ТекстПоиска попадется одинарная кавычка или служебный символ LIKE?
5 OnePrg
 
29.12.21
12:35
(4) согласен, но вряд ли оператор будет вводить такие симмволы, обычно ограничиваются буквами
6 OnePrg
 
29.12.21
12:35
ТекстЗапроса = "
    |SELECT
    |    спрТовары.Code as Код,
    |    спрТовары.ID as [Товар $Справочник.Номенклатура]
    |FROM
    |    $Справочник.Номенклатура as спрТовары
    |WHERE
    |  спрТовары.Descr LIKE '%"+СокрЛП(ТекстПоиска)+"%'
    |  OR спрТовары.Code LIKE '%"+СокрЛП(ТекстПоиска)+"%'";


работает
7 acht
 
29.12.21
12:46
(5) > оператор будет вводить
Ты ему еще запрети из буфера обмена текст вставлять, ага.
8 Sserj
 
29.12.21
13:33
(5) Для этого нужно использовать параметризированый подготовленный запрос. Если тип параметра указан однозначно строкой спец символы в нем будут трактоваться как обычная строка.
9 Ryzeman
 
29.12.21
13:33
(1) Сам ответил. Другой вопрос зачем в (6) SQL-инъекция?...
Чем УстановитьТекстовыйПараметр не устраивает?
10 Ryzeman
 
29.12.21
13:43
(9)+ Какой-нибудь шутник забьёт тебе в поиск 1%; DROP TABLE 1SJOURN; --

и привет :)