Работа со строками в языке запросов
6 мин
Описание
Существует несколько видов взаимодействия со строками в языке запросов 1С: конкатенация, выбор подстроки и сравнение.
Конкатенация
Конкатенация строк в языке запросов реализована с помощью оператора "+".
Пример:
ВЫБРАТЬ
"а" + "б" // Результат "аб"
или например сложим две строки, только одну получим из таблицы БД
ВЫБРАТЬ
"Товар: " + Номеклатура.Наименование КАК Наименование
Из Справочник.Номенклатура КАК Номеклатура
В результате получим все наименования из справочника Номенклатура, к которым вначале добавилась строка "Товар: ". Например "Товар: Coca-Cola".
или например сложим две строки, только одну строку получим выражением ПРАВ()
ВЫБРАТЬ
"Товар: " + Выразить(Прав(Номеклатура.Код,1) как строка(1)) КАК Наименование
Из Справочник.Номенклатура КАК Номеклатура
В результате получим сумму строки "Товар: " с последним символом кода номенклатуры. Например "Товар: 1".
Функции работы со строками
ПОДСТРОКА()
Функция для работы со строками ПОДСТРОКА позволяет выделить часть строки, указанной длины из исходной строки, начиная с указанной позиции.
Синтаксис функции ПОДСТРОКА:
ПОДСТРОКА(<Строка>, <НачальнаяПозиция>, <Длина>).
Строка - Исходная строка, последовательность символов, слово.
Начальная позиция - Номер первого символа части строки, которую хотим получить в результате. Следует учитывать, что нумерация символов в строке начинается с 1, так же можно использовать и числа меньше 1 для указания начальной позиции, но все они в результате работы функции будут приведены к 1.
Длина - Количество символов после начальной позиции, которые должны попасть в результат.
Пример:
ВЫБРАТЬ
ПОДСТРОКА("Привет, мир!", 9, 3) // Результат "мир"
В этом примере мы видим строку "Привет, мир!". Если подсчитать количество символов в ней, то мы можем убедиться что их 12
В функцию ПОДСТРОКА первым параметром мы передали наше строковое значение, вторым параметром указали номер символа - 9, с которого хотим начать часть строки, а третьим параметром указали сколько символов после начала так же должно попасть в результирующую подстроку - 3. В результате выполнения функции платформа вернет нам подстроку "мир".
Строка()
Функция преобразует в строку значения примитивных типов. При попытке преобразования в строку значения не примитивного типа будет выдана ошибка выполнения запроса. Так же при применении к значению NULL, в результате так же будет NULL.
В качестве примера преобразуем к строке число 42
ВЫБРАТЬ
СТРОКА(42) // Результат строка "42"
ДлинаСтроки()
Функция ДлинаСтроки возвращает количество символов в переданной строке в качестве значения.
Пример:
ВЫБРАТЬ
ДлинаСтроки("Привет, мир!") // Результат 12
СокрЛ()
Функция СокрЛ удаляет незначащие символы, которые находятся слева от первого значащего символа в переданном строковом значении. Под незначащими символами понимаются пробелы(обычный, неразрывный), символы табуляции, перевода каретки и т.д.
Пример, в исходной строке есть пробельные символы вначале:
ВЫБРАТЬ
СокрЛ(" Привет, мир!") // Результат "Привет, мир!"
СокрП()
Функция СокрП удаляет незначащие символы, которые находятся справа от первого значащего символа в переданном строковом значении. Под незначащими символами понимаются пробелы(обычный, неразрывный), символы табуляции, перевода каретки и т.д.
Пример, в исходной строке есть пробельные символы в конце:
ВЫБРАТЬ
СокрП("Привет, мир! ") // Результат "Привет, мир!"
СокрЛП()
Функция объединяет в себе две другие функции СокрЛ и СокрП, и удаляет незначащие символы стоящие перед первым значащим символом в строке и незначащие символы стоящие после последнего значащего символа в строке. Под незначащими символами понимаются пробелы(обычный, неразрывный), символы табуляции, перевода каретки и т.д.
Пример: в этой строке есть лишние пробелы вначале, середине и в конце. Пробелы слева и справа удалились, но в середине остались.
ВЫБРАТЬ
СокрЛП(" Привет, мир! ") // Результат "Привет, мир!"
Лев()
Функция позволяет получить часть символов из строки, находящихся слева, по переданному количеству символов.
Синтаксис
Лев (Значение, ЧислоСимволов)
Пример, получим 6 символов с начала строки:
ВЫБРАТЬ
Лев("Привет, мир!", 6) // Результат "Привет"
Прав()
Функция позволяет получить часть символов из строки, находящихся справа, по переданному количеству символов.
Синтаксис
Прав(Значение, ЧислоСимволов)
Пример, получим 4 символа с конца строки:
ВЫБРАТЬ
Прав("Привет, мир!", 4) // Результат "мир!"
СтрНайти()
Функция производит поиск в строке и возвращает номер первого символа найденного вхождение искомой строки. Регистр при поиске не учитывается. Если ничего не найдено, то в результате вернется 0
Синтаксис
СтрНайти(СтроковоеЗначение, ИскомаяСтрока)
Пример:
ВЫБРАТЬ
СтрНайти("125435", "3"), // Результат "5"
СтрНайти("125435", "6") // Результат "0"
ВРег()
Функция приводит все буквы содержащиеся в переданной строке в верхний регистр
Пример:
ВЫБРАТЬ
ВРег("Привет, мир!") // Результат "ПРИВЕТ, МИР!"
НРег()
Функция приводит все буквы содержащиеся в переданной строке в нижний регистр
Пример:
ВЫБРАТЬ
НРег("Привет, мир!") // Результат "привет, мир!"
СтрЗаменить()
Функция находит в переданном строковом значении все вхождения искомой строки и заменяет их на строку замены. Регистр не учитывается.
Синтаксис
СтрЗаменить(Строка, ПодстрокаПоиска, ПодстрокаЗамены)
Пример, заменим все буквы "р", на буквы "л":
ВЫБРАТЬ
СтрЗаменить("Привет, мир!", "р", "л") // Результат "Пливет, мил!"
Сравнение строк
Сравнение строк может производится с помощью оператора "=". При сравнении регистр не учитывается.
Пример, сравним две строки:
ВЫБРАТЬ
"Привет" = "привет" // Результат Истина
Оператор ПОДОБНО
Предназначен для сравнения строковых выражений с заданным шаблоном. Результатом такой проверки будет «Ложь» или «Истина». Отличие от оператора "=" заключается в возможности использования спецсимволов. Шаблон оператора ПОДОБНО задается с помощью специальных символов:
%(процент) - символ или последовательность символов, имеющая любое количество произвольных символов
_(подчеркивание) - один произвольный символ
[ ] (квадратные скобки) - позволяют указать один или несколько символов, один из которых может содержаться в искомой строке
СПЕЦСИМВОЛ - Позволяет использовать один из перечисленных спецсимволов, в качестве обычного символа, если такой символ имеется в строке.
Оператор ПОДОБНО можно использовать:
- В полях выборки, как на примере выше
- В условии ГДЕ
- В конструкции ВЫБОР КОГДА
Синтаксис
<Строковое выражение> ПОДОБНО <"Шаблон">
Пример, определим, что переданное значение является почтовым адресом для хостинга mail.ru, в данной строке первым символом идет нижнее подчеркивание, и потому нам пришлось использовать СПЕЦСИМВОЛ, для того, чтобы иметь возможность описать нашу строку с помощью шаблона:
ВЫБРАТЬ
"_test@mail.ru" Подобно "\_%@mail.ru" СПЕЦСИМВОЛ "\" // Результат Истина
Пример, найдем все элементы справочника Номенклатура, содержащие слово "Фрукт" в названии:
ВЫБРАТЬ
Номенклатура.Ссылка КАК Товар
Из Справочник.Номенклатура КАК Номенклатура
ГДЕ Номенклатура.Наименование ПОДОБНО "%фрукт%"
Результатом будет набор элементов:
Товар |
---|
Фруктово-ореховая смесь |
Фруктовый сок |
Задачи на эту тему:
- Задача 71. Работа со строками
- Задача 61. Работа со строками в языке запросов
- Задача 53. Псевдонимы полей
- Секция "Выбрать": 2
- Задача 6. Выборка с отбором по шаблонному строковому значению
- Задача 7. Выборка с комбинированными отборами
- Задача 12. Выборка с отбором по строковому шаблону
- Задача 44. Использование строковых функций