|
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; --
и привет :)
|
|