Строковые функции sql — для студента

Мы продолжаем изучение языка запросов SQL, и сегодня мы с Вами будем разговаривать о строковых функциях SQL. Мы рассмотрим основные и часто используемые строковые функции, такие как: LOWER, LTRIM, REPLACE и другие, все рассматривать мы будем, конечно же, на примерах.

Строковые функции SQL - Для студента

В прошлой статье «Основы языка запросов SQL – оператор SELECT» мы с Вами узнали, что такое вообще SQL, а также рассмотрели основы оператора SELECT (условия отбора, агрегатные функции), здесь же мы продолжаем изучение оператора SELECT, а если говорить конкретней, то будем рассматривать строковые функции SQL.

Строковые функции используются для возвращения уже отредактированного значения. Другими словами, например, у Вас в колонке все значения состоят более чем из 20 символов, а Вам нужно возвратить всего первые 5 символов, это можно сделать с помощью так называемых строковых функциях.

Теперь перейдем непосредственно к самим функциям. Здесь я рассматриваю только часто используемые в работе или просто полезные строковые функции.

Функция CONCAT

Начнем с функции CONCAT – она используется для объединения значений двух столбцов в один. Допустим у Вас в таблице, «Имя» и «Фамилия» находятся в разных колонках (что логично), а Вам, для какого-нибудь отчета, нужно чтобы они выводились в одной колонке. Вы можете легко использовать данную функцию.

SELECT CONCAT (name, surname) AS FIO FROM table

С помощью данного запроса Вы объедините две колонки в одну, т.е. у Вас получится не вот так

А вот так

Аналогично этому запросу можно использовать следующую конструкцию (применимо в PostgreSQL).

SELECT name || surname AS FIO FROM table

Или чтобы отделить пробелом введите

SELECT name || ' ' || surname AS FIO FROM table

т.е. две вертикальные черты объединяют два столбца в один, а чтобы отделить их пробелом я поставил между ними пробел (можно использовать любой символ, например тире или двоеточие) в апострофах и объединил также двумя вертикальными чертами (в Transact-SQL вместо двух вертикальных черточек используется знак +).

Функция INITCAP

Дальше идет также очень полезная функция, INITCAP – которая возвращает значение в строке, в которой каждое слово начинается с заглавной буквы, а продолжается маленькими.

Это нужно для того, если у Вас в той или иной колонке не соблюдают правила заполнения и для того чтобы вывести все это дело в красивом виде можно использовать данную функцию, например, у Вас в таблице записи в колонке name следующего вида: ИВАН иванов или петр петров, Вы применяете данную функцию.

SELECT INITCAP (name) AS FIO FROM table

И у Вас получится вот так.

Функция LOWER

Следующая функция также может пригодиться. LOWER – возвращает в значение все слова с маленькой буквы. Используем пример выше, но только будем пользоваться следующий функцией.

SELECT LOWER (name) AS FIO FROM table

А теперь получится вот так.

Функция UPPER

Похожая функция, только возвращает все символы с заглавной буквы, это UPPER.

SELECT UPPER (name) AS FIO FROM table

Пример

Функция LPAD

Далее идет функция LPAD — она пригодится Вам, если Вам необходимо дополнить слева некими символами, до определенного количества знаков. Допустим, Вам необходимо, чтобы длина поля «Имя» была 20 знаков, и если длина имени меньше (например, «Иван» явно меньше 20 знаков), то будет происходить дополнение слева специальным символом (для примера используем тире).

SELECT LPAD (name, 20, '-') AS name FROM table

Где,

  • name – название колонки;
  • 20 – количество знаков (длина поля);
  • ‘-‘ – символ, которым нужно дополнить до необходимого количества знаков.

Функция RPAD

Сразу рассмотрим обратную функцию. RPAD – действие и синтаксис тот же что и у LPAD, только дополняются символы справа (в LPAD слева).

SELECT RPAD (name, 20, '-') AS name FROM table

Функция LTRIM

Далее идет тоже в некоторых случаях полезная функция, LTRIM – эта функция удаляет крайние левые символы, которые Вы укажите. Например, у Вас в базе есть колонка «город», в которой город указан в виде «г.

Москва», а также есть города которые указанны в виде просто «Москва». Но Вам нужно вывести отчет только в виде «Москва» без «г.», но как это сделать, если есть и такие и такие? Вы просто указываете своего рода шаблон «г.» и если крайние левые символы начинаются с «г.

», то эти символы просто не будут выводиться.

SELECT LTRIM (city, 'г.') AS gorod FROM table

До функции После функции
г.Москва Москва
Москва Москва
г.Калуга Калуга

Данная функция просматривает символы слева, если символов по шаблону нет в начале строки, то она возвращает исходное значение ячейки, а если есть, то удаляет их.

Функция RTRIM

Также давайте сразу рассмотрим обратную функцию. RTRIM – то же самое что и LTRIM только символы ищутся справа.

Примечание! В Transact-SQL функции RTRIM и LTRIM удаляют пробелы справа и слева соответственно.

Функция REPLACE

Теперь рассмотрим такую интересную функцию как REPLACE – она возвращает строку, в которой все совпадения символов, заменяются на Ваши символы, которые Вы укажите.

 Для чего ее можно использовать, например, у Вас в базе есть колонки, в которых встречаются некие разделительные символы, допустим «/».

Например, Иван/Иванов, а Вам хотелось бы вывести Иван-Иванов, то напишите

SELECT REPLACE (name, '/', '-' ) FROM table

и у Вас произойдет замена символов.

Данная функция заменяет только полное совпадение символов, если например Вы укажите «—» т.е. три тире она и будет искать только три тире, а каждое отдельное тире заменять не будет, в отличие от следующей функции.

Функция TRANSLATE

TRANSLATE – строковая функция, которая заменяет все символы в строке, на те символы, которые Вы укажите. Исходя из названия функции, можно догадаться, что это полный перевод строки. Отличие данной функции от REPLACE в том, что она заменяет каждый символ, который Вы укажите, т.е.

у Вас есть три символа, допустим абв и с помощью TRANSLATE Вы его можете заменить на abc таким образом у Вас а=a, б=b, в=c и по такому принципу будут заменяться все совпадения символов. А если Вы заменяли с помощью  REPLACE, то у Вас искалось только полное совпадение символов абв расположенных подряд.

SUBSTR – данная функция, возвращает только тот диапазон символов, который Вы укажите. Другими словами, допустим, строка из 10 символов, а Вам все десять не нужны, а допустим, нужны только 3-8 (с третьего по восьмой).

С помощью данной функции Вы легко можете это сделать. Например, у Вас в базе есть какой-нибудь идентификатор, фиксированной длинны (типа: AA-BB-55-66-CC) и каждая комбинация символов что-то означает.

И в один прекрасный момент Вам сказали вывести только 2 и 3 комбинацию символов, для этого вы пишите запрос следующего вида.

SELECT SUBSTR (ident, '4', '8' ) FROM table

т.е. мы выводим все символы, начиная с 4 и заканчивая 8, и после этого запроса у Вас выведется вот это:

BB-55

Функция LENGTH – длина строки

Следующая функция также может пригодиться, это LENGTH – которая просто на всего считает количество символов в строке. Например, Вам нужно узнать, сколько символов в каждой ячейки столбца допустим «name», таблица следующего вида.

SELECT LENGTH (name) FROM table

после этого запроса Вы получите вот это.

Вот мы с Вами и рассмотрели основные строковые функции SQL. В следующих статьях мы продолжим изучение SQL.

Источник: https://info-comp.ru/obucheniest/153—sql-.html

T-SQL — Строковые функции

Строковые функции MS SQL Server могут применяться к строковому значению или возвращать строковое значение или числовые данные.

Ниже приведен список функций String с примерами.

ASCII ()

Значение кода Ascii будет выводиться для символьного выражения.

пример

Следующий запрос даст значение кода Ascii для данного символа.

Select ASCII ('word')

СИМВОЛ ()

Символ будет выводиться для заданного кода или целого числа Ascii.

пример

Следующий запрос даст символ для данного целого числа.

Select CHAR(97)

NCHAR ()

Символ Unicode будет выводиться для данного целого числа.

пример

Следующий запрос даст символ Unicode для данного целого числа.

Select NCHAR(300)

CHARINDEX ()

Начальная позиция для заданного поискового выражения будет отображаться в заданном строковом выражении.

пример

Следующий запрос даст начальную позицию символа «G» для данного строкового выражения «KING».

Select CHARINDEX('G', 'KING')

ОСТАВИЛ()

Левая часть данной строки, пока указанное количество символов не будет выводиться для данной строки.

пример

Следующий запрос выдаст строку «WORL», как указано 4 числа символов для данной строки «WORLD».

Select LEFT('WORLD', 4)

ПРАВО()

Правая часть данной строки до тех пор, пока указанное количество символов не будет выводиться для данной строки.

Читайте также:  Дневник для отчета по практике: структура, оформление и требования

пример

Следующий запрос выдаст строку ‘DIA’ как упомянутое количество символов для данной строки ‘INDIA’.

Select RIGHT('INDIA', 3)

SUBSTRING ()

Часть строки, основанная на значении начальной позиции и значении длины, будет выводиться для данной строки.

пример

Следующие запросы будут давать строки «WOR», «DIA», «ING», как мы упоминали (1,3), (3,3) и (2,3), в качестве значений начала и длины соответственно для данных строк «WORLD» , «Индия» и «Король».

Select SUBSTRING ('WORLD', 1,3)
Select SUBSTRING ('INDIA', 3,3)
Select SUBSTRING ('KING', 2,3)

LEN ()

Количество символов будет выводиться для данного строкового выражения.

пример

Следующий запрос даст 5 для строкового выражения ‘HELLO’.

Select LEN('HELLO')

НИЖНИЙ ()

Строчная строчная строка будет выводиться для данных данной строки.

пример

Следующий запрос выдаст «sqlserver» для символьных данных «SQLServer».

Select LOWER('SQLServer')

ВЕРХНИЙ ()

Прописная строка будет выводиться для данных данной строки.

пример

Следующий запрос выдаст SQLSERVER для символьных данных SqlServer.

Select UPPER('SqlServer')

LTRIM ()

Строковое выражение будет выводиться для заданных строковых данных после удаления начальных пробелов.

пример

Следующий запрос даст «МИР» для символьных данных «МИР».

Select LTRIM(' WORLD')

RTRIM ()

Строковое выражение будет выводиться для заданных строковых данных после удаления конечных пробелов.

пример

Следующий запрос даст «ИНДИЯ» для символьных данных «ИНДИЯ».

Select RTRIM('INDIA ')

REPLACE ()

Строковое выражение придет в качестве вывода для данных строковых данных после замены всех вхождений указанного символа указанным символом.

пример

Следующий запрос выдаст строку ‘KNDKA’ для данных строки ‘INDIA’.

Select REPLACE('INDIA', 'I', 'K')

REPLICATE ()

Повторное строковое выражение придет в качестве вывода для заданных строковых данных с указанным числом раз.

пример

Следующий запрос даст строку «WORLDWORLD» для данных строки «WORLD».

Select REPLICATE('WORLD', 2)

ЗАДНИЙ ХОД()

Обратное строковое выражение придет как выход для заданных строковых данных.

пример

Следующий запрос выдаст строку ‘DLROW’ для данных строки ‘WORLD’.

Select REVERSE('WORLD')

SOUNDEX ()

Возвращает четырехсимвольный код (SOUNDEX) для оценки сходства двух заданных строк.

пример

Следующий запрос даст ‘S530’ для строк ‘Smith’, ‘Smyth’.

Select SOUNDEX('Smith'), SOUNDEX('Smyth')

РАЗНИЦА ()

Целочисленное значение будет получено как результат заданных двух выражений.

пример

Следующий запрос даст 4 для выражений «Смит», «Смит».

Select Difference('Smith','Smyth')

Примечание. Если выходное значение равно 0, это указывает на слабое или полное отсутствие сходства между двумя выражениями.

ПРОСТРАНСТВО()

Строка будет выводиться с указанным количеством пробелов.

пример

Следующий запрос даст «Я люблю Индию».

Select 'I'+space(1)+'LOVE'+space(1)+'INDIA'

ВЕЩЕСТВО ()

Строковое выражение придет в качестве вывода для данных строковых данных после замены начального символа до указанной длины указанным символом.

пример

Следующий запрос выдаст строку ‘AIJKFGH’ для данных строки ‘ABCDEFGH’ в соответствии с заданным начальным символом и длиной как 2 и 4 соответственно и ‘IJK’ в качестве указанной целевой строки.

Select STUFF('ABCDEFGH', 2,4,'IJK')

STR ()

Символьные данные поступят как выходные данные для данных числовых данных.

пример

Следующий запрос даст 187,37 для данного 187,369 на основе заданной длины как 6 и десятичной как 2.

Select STR(187.369,6,2)

UNICODE ()

Целочисленное значение придет как выход для первого символа данного выражения.

пример

Следующий запрос даст 82 для выражения ‘RAMA’.

Select UNICODE('RAMA')

QUOTENAME ()

Данная строка будет выводиться с указанным разделителем.

пример

Следующий запрос выдаст «RAMA» для данной строки «RAMA», так как мы указали двойную кавычку в качестве разделителя.

Select QUOTENAME('RAMA','»')

PATINDEX ()

Требуется начальная позиция первого вхождения из данного выражения, поскольку мы указали позицию «I».

пример

Следующий запрос даст 1 для «ИНДИИ».

Select PATINDEX('I%','INDIA')

ФОРМАТ()

Данное выражение будет выводиться в указанном формате.

пример

Следующий запрос даст «понедельник, 16 ноября 2015 г.» для функции getdate в соответствии с указанным форматом, где «D» обозначает название дня недели.

SELECT FORMAT ( getdate(), 'D')

CONCAT ()

Одна строка будет выводиться после объединения указанных значений параметров.

пример

Следующий запрос даст «A, B, C» для заданных параметров.

Источник: https://coderlessons.com/tutorials/bazy-dannykh/vyuchi-t-sql/t-sql-strokovye-funktsii

Встроенные строковые SQL функции в базах данных SQLite

29.05.2017

И

Комментариев нет

21

  • Помощь проекту:
    WMR: R288272666982
    WMZ: Z293550531456
  • Яндекс.Деньги: 410011531129223

Рубрика SQLite на сайте: http://zametkinapolyah.ru/zametki-o-mysql/sqlite/
Паблик блога в ВК: https://vk.com/zametkinapolyah

Тематическая группа в ВК: https://vk.com/zametki_bd

— Конкатенация при помощи оператора ||
SELECT ‘Привет,’ || ‘ мир!’;
SELECT ‘Привет,’ || ‘ ‘ || ‘мир!’;
— Кавычки можно экранировать другими кавычками
SELECT ”’Привет,”’|| ‘ мир!’;
— Или использовать другой вид кавычек

SELECT “‘Привет, ‘” || ‘”мир!”‘;

— Поиск вхождения подстроки в строку instr
— Функция работает начиная с SQLite 3.7.15
SELECT instr(‘Привет, миР!’, ‘П’);
SELECT instr(‘Привет, миР!’, ‘Р’);
SELECT instr(‘Привет, мир!’, ‘р’);
SELECT instr(‘Привет, миР!’, ‘вет’);
SELECT instr(‘Привет, миР!’, ‘г’);

  1. — если строки с типом BLOB, то функция возвращает число байт до первого вхождения подстроки плюс один байт
  2. — Как узнать длину строки length
    SELECT length(543);
    SELECT length(‘543’);
    SELECT length(9);
    SELECT length(‘string’);
    SELECT length(NULL);
    SELECT length(TRUE);
    SELECT length(”);
    SELECT length(‘ ‘);
  3. — для BLOB строк возвращает не количество символов, а количество байт

— Перевод строки в нижний регистр lower
— Функция работает только для символов ASCII, для других того, чтобы обеспечить поддержку других символовов,
— воспользуйтесь расширением ICU.
SELECT lower(‘Привет, миР!’);
SELECT lower(‘ПРИВЕТ, МИР!!!’);
SELECT lower(‘Hello’);

SELECT lower(‘HELLO’);

— Отрезать символы слева ltrim
SELECT ltrim(‘ Привет, мир!’);
SELECT ltrim(‘ Привет, мир!’);
SELECT ltrim(‘ Привет, мир! ‘);
SELECT ltrim(‘ Привет, мир! Еще одна часть строки ‘);
SELECT ltrim(‘ ааааббббвввв’, ‘а’);
SELECT ltrim(‘абвабвпетя абв’, ‘абв’);
SELECT ltrim(‘абвабввввввПетя абв’, ‘абв’);

SELECT ltrim(‘ 3453462000абвабввввввПетя абв’, ‘0123456789’);

— Замена подстроки в строке replace
replace(строка, удаляемая подстрока, вставляемая подстрока )
SELECT replace(‘Привет, мир!’, ‘мир’, ‘Вася’);
SELECT replace(‘Привет, Мир!’, ‘мир’, ‘Вася’);
SELECT replace(‘Привет, Мир!’, ‘Мир’, ‘Вася’);
SELECT replace(‘абв абв абв’, ‘а’, ‘К’);
SELECT replace(‘абв абв абв’, ‘А’, ‘К’);
SELECT replace(‘123 123 123’, 2, 5);

SELECT replace(‘123 123 123’, ‘2’, ‘5’);

— Отрезать символы справа rtrim
SELECT rtrim(‘Привет, мир! ‘);
SELECT rtrim(‘ Привет, мир! ‘);
SELECT rtrim(‘ Привет, мир! еще немного текста ‘);
SELECT rtrim(‘1230000’, 0);

  • SELECT rtrim(‘1230000’, ‘0’);
  • — Получить подстроку substr
    substr(строка, стартовая позиция, [ длина подстроки ] )

SELECT substr(‘Привет, мир!’, 1, 3);
SELECT substr(‘Привет, мир!’, 1);
SELECT substr(‘Привет, мир!’, 5);
SELECT substr(‘Привет, мир!’, -1, 3);
SELECT substr(‘Привет, мир!’, 4);
SELECT substr(‘Привет, мир!’, 4, 2);
SELECT substr(‘Привет, мир!’, -4, 2);

SELECT substr(‘Привет, мир!’, -1, 1);

— Обрезать символы trim
SELECT trim(‘ Привет, мир!’);
SELECT trim(‘ Привет, мир! ‘);
SELECT trim(‘ Привет, мир! Еще одна часть строки ‘);
SELECT trim(‘ааааббббвввв ааа’, ‘а’);
SELECT trim(‘ ааааббббвввв ааа’, ‘а’);
SELECT trim(‘абвабвпетя ттт абв’, ‘абв’);
SELECT trim(‘абвабввввввПетя абв’, ‘абв’);

SELECT trim(‘3453462000абвабввввввПетя абв’, ‘0123456789’);

— Перевести строку в верхний регистр upper
— Функция работает только для символов ASCII, для других того, чтобы обеспечить поддержку других символовов,
— воспользуйтесь расширением ICU.
SELECT upper(‘Привет, миР!’);
SELECT upper(‘привет, мир!!!’);

SELECT upper(‘hello’);

Последние сообщения

Источник: https://acadstudent.ru/video/vstroennye-strokovye-sql-funktsii-v-bazah/

Строковые функции SQL, УРОК 9

Продолжаем серию видеоуроков по изучению языка программирования для управления базами данных, языка запросов SQL. В этом, 9 видеуроке, рассматриваем строковые функции SQL. Для начала вспомним предыдущие уроки:

  • Введение в SQL, видео урок 1
  • Лекция о языке SQL
  • Урок 3, Установка MySQL
  • 4 Урок, Базовые команды SQL
  • 5 Видеоурок, Команда SQL SELECT
  • 6 Видео Урок, команды DELETE и UPDATE, удалять и обновлять записи, языка SQL
  • Урок 7. Понятие нормализации в теории БД
  • SQL ALTER TABLE — sql запрос на модификацию таблицы базы данных

Что такое cтроковые функции SQL

Строковые функции SQL предназначены для производства определенных действий, а главное, для возвращения отредактированных значений.

Например, у вас в таблице все поля имеют значения из 15 символов. Вам, при редактировании таблицы, нужно, чтобы значения были сокращены и после запроса, вернулись лишь первые 5 символов. Это и можно сделать при помощи строковых функции SQL.

Строковые функции SQL, описания

Функция CONCAT

Строковая функция CONCAT применяется для объединения значений двух полей в один.

Select CONCAT (value, subvalue) ЧТО_ВЫБРАТЬ FROM откуда_выбрать
//объединяем столбцы value и survalue, в таблице откуда_выбрать.

Функция INITCAP

Строковая функция INITCAP возвращает значение в записи таблицы, где каждое слово начинается с заглавной, буквы, а продолжается строчными буквами.

Применяется для улучшения внешнего вида таблиц и исправления правил заполнения.

Select INITCAP (value) ЧТО_ВЫБРАТЬ FROM откуда_выбрать

Функция LOWER

Строковая функция LOWER, возвращает после запроса все слова с маленькой буквы.

Select LOWER (value) ЧТО_ВЫБРАТЬ FROM откуда_выбрать

Читайте также:  Лейкоциты - для студента

Функция UPPER

Строковая функция UPPER, возвращает после запроса все слова с заглавной буквы.

Select UPPER (value) ЧТО_ВЫБРАТЬ FROM откуда_выбрать

Функция LPAD

Строковая функция  LPAD предназначена, для дополнения значения символами слева. Используется, для увеличения длинны поля.

Select LPAD (value, 20, '-') as value FROM откуда_выбрать
//увеличиваем длину поля до 20 знаков, добавляя к значению тире слева.

Функция RPAD

Строковая функция аналогична функции LPAD, только символы дополняются слева значения.

Select RPAD (value, 20, '-') as value FROM откуда_выбрать
//увеличиваем длину поля до 20 знаков, добавляя к значению тире справа.

Функция LTRIM

Строковая функция LTRIM удаляет указанные символы слева значения.

Select LTRIM (city, 'г.') ЧТО_ВЫБРАТЬ FROM откуда_выбрать
//удаляем г. Слева значения (город).

Функция RTRIM

Строковая функция LTRIM удаляет указанные символы справа.

Функция REPLACE

Строковая функция REPLACE ищет совпадение символов в строке и возвращает после запроса строку с замененными совпадающими символами на указанные вами символы.

Select REPLACE (value,  '/', '-' ) FROM откуда_выбрать
//меняем символы слеш на тире.

Функция TRANSLATE

Строковая функция  TRANSLATE  меняет все символы в записи, на указанные новые символы.

Функция SUBSTR

Строковая функция SUBSTR возвращает только указанный диапазон символов.

Select SUBSTR (ident, '5', '9') FROM откуда_выбрать
//выводим символы с 5 по 9.

Функция LENGTH

Строковая функция LENGTH считает количество символов в записи.

Select LENGTH (value) FROM откуда_выбрать

Это все строковые функции SQL, а теперь видеоурок.

9 Видеоурок строковые функции SQL

©webonto.ru

Источник: https://webonto.ru/strokovyie-funktsii-sql/

О строковых функциях sql или как манипулировать текстом в базе данных mysql

Здравствуйте, уважаемые читатели блога webcodius.ru. Сегодня я хотел бы поговорить о языке SQL, а в частности о функциях для обработки текста. Для создания и управления сайтом часто бывает не обязательно знание языка SQL.

Системы управления контентом позволяют редактировать контент сайта без написания запросов.

Но хотя бы поверхностное знакомство с структурированным языком запросов поможет вам значительно ускорить модификацию и управление данными в базе данных вашего сайта.

Передо мной частенько возникают задачи: удалить часть текста из текстовых полей базы данных, объединить строковые данные или еще что-нибудь связанное с текстом. Делать все это через админские панели сайтов очень неудобно и муторно. Гораздо проще бывает написать запрос к базе данных выполняющий все эти действия за пару секунд.

Итак, начнем…

Символьные функции в языке sql

Начнем по порядку с самого простого. Первой рассмотрим строковую функцию ASCII, которая используется для определения ASCII-кода текстовых символов:

integer ASCII(str string)

Функция возвращает целое значение — ASCII-код первого левого символа строки str. В случае если строка str пустая возвращает 0 и NULL если строка str не существует.

  • Пример:
  • SELECT ASCII ('t');
    Результат: 116
    SELECT ASCII ('test');
    Результат: 116
    SELECT ASCII (1);
  • Результат: 49
  • Далее функция ORD, которая также определяет ASCII- код символов, но может обрабатывать также многобайтовые символы:
  • integer ORD(str string)

Если первый левый символ строки str многобайтовый, то возвращает его код в формате: ((первый байт ASCII- код)*256+(второй байт ASCII -код))[*256+третий байт ASCII -код…]. В случае если первый левый символ строки str не является многобайтовым, работает как функция ASCII — возвращает его ASCII-код.

  1. Пример:
  2. SELECT ORD ('test');
    Результат: 116
  3. Функция CHAR, тесно связанная с функцией ASCII и выполняет обратное действие:

string CHAR(int integer, …)

Функция CHAR возвращает строку символов по их ASCII-кодам. Если среди значений встречается значение NULL, то оно пропускается.

Пример:

SELECT CHAR ( 116, '101', 115, '116' );
Результат: 'test'

SQL функции для объединения строк

Одна из самых популярных категорий функций.  Ведь частенько бывает нужно объединить значения нескольких полей таблиц базы данных сайта. В языке SQL есть сразу несколько функций для конкатенации строк.

Функция CONCAT:

string CONCAT(str1 string, str2 string,…)

Функция возвращает строку, созданную путем объединения аргументов. Можно указывать более двух аргументов. Если один из аргументов является NULL, то и возвращаемый результат будет NULL. Числовые значения преобразуются в строку.

Пример:

SELECT CONCAT ('Hello', ' ', 'world', '!');
Результат: 'Hello world!'
SELECT CONCAT ('Hello', NULL, 'world', '!');
Результат: NULL
SELECT CONCAT ('Число пи', '=', 3.14);

Результат:  'Число пи=3.14'

Как видно из примеров, строки объединяются без разделителей. Для того чтобы разделить слова в первом примере в качестве аргумента приходится использовать пробел. Если бы слов было больше, то каждый раз вставлять пробелы было бы не очень удобно.

Для таких случаев существует функция CONCAT_WS:

string CONCAT_WS(separator string, str1 string, str2 string,…)

Функция объединяет строки как и функция CONCAT, но вставляет между аргументами разделитель separator. В случае если аргумент separator является NULL, то и результат будет NULL. Аргументы строки равные NULL пропускаются.

  • Пример:
  • SELECT CONCAT_WS (' ', 'Иванов', 'Иван', 'Иванович');
    Результат: 'Иванов Иван Иванович'
    SELECT CONCAT_WS (NULL, 'Иванов', 'Иван', 'Иванович');
    Результат: NULL
    SELECT CONCAT_WS (' ', 'Иванов', NULL, 'Иван', 'Иванович');
  • Результат: ''Иванов Иван Иванович'
  • В случае объединения большого количества строк, которые необходимо отделять разделителем, функция CONCAT_WS гораздо удобнее функции CONCAT.

Иногда бывает необходимо удлинить строку до определенного количества символов за счет повторения какого-либо символа. Это тоже своего рода объединение строк. Для этого можно использовать функции LPAD и RPAD. Функции имеют следующий синтаксис:

string LPAD(str string, len integer, padstr string)
string RPAD(str string, len integer, padstr string)

Функция LPAD возвращает строку str дополненную слева строкой padstr до длины len. Функция RPAD выполняет тоже самое, только удлинение происходит с правой стороны.

Пример:

SELECT LPAD ('test', 10, '.');
Результат: ……test
SELECT RPAD ('test', 10, '.');

Результат: test……

  1. В данных функциях необходимо обратить внимание на параметр len, который ограничивает количество выводимых символов. Поэтому если длина строки str будет больше чем параметр len, то строка будет обрезана:
  2. SELECT LPAD ('test', 3, '.');
    Результат: tes

Определение длины строки в sql запросах

  • Для определения количества символов в строке в языке SQL отвечает функция LENGTH — длина строки:
  • integer LENGTH(str string)
  • Функция возвращает целое число равное количеству символов в строке str.
  • Пример:
  • SELECT LENGTH ('test');
    Результат: 4
  • В случае использования многобайтовых кодировок функция LENGTH выдает не правильный результат. Например в случае если задана кодировка unicode, то запрос:
  • SELECT LENGTH ('тест');

вернет 8.

Что, легко заметить, в два раза больше реального количества символов. В этом случае нужно использовать функцию CHAR_LENGTH:

  1. integer CHAR_LENGTH(str string)
  2. Функция также возвращает длину строки str и поддерживает многобайтовые символы.
  3. Например:
  4. SELECT CHAR_LENGTH ('тест');
    Результат: 4

Поиск подстроки в строке средствами sql

Для вычисления позиции подстроки в строке в языке sql существует несколько функций. Первая, которую мы рассмотрим, функция POSITION:

integer POSITION(substr string IN str string)

Возвращает номер позиции первого вхождения подстроки substr в строке str и возвращает 0 если подстрока не найдена. Функция POSITION может работать с многобайтовыми символами.

  • Пример:
  • SELECT POSITION ('cd' IN 'abcdcde');
    Результат: 3
    SELECT POSITION ('xy' IN 'abcdcde');
  • Результат: 0
  • Следующая функция LOCATE позволяет начинать поиск подстроки с определенной позиции:
  • integer LOCATE(substr string, str string, pos integer)

Возвращает позицию первого вхождения подстроки substr в строке str, начиная с позиции pos. Если параметр pos не задан, то поиск осуществляется с начала строки. Если подстрока substr не найдена, то возвращает 0. Поддерживает многобайтовые символы.

  1. Пример:
  2. SELECT LOCATE ('cd', 'abcdcdde', 5);
    Результат: 5
    SELECT LOCATE ('cd', 'abcdcdde');
  3. Результат: 3
  4. Аналогом функций POSITION и LOCATE является функция INSTR:
  5. integer INSTR(str string, substr string)

Также как и функции выше возвращает позицию первого вхождения подстроки substr в строке str. Единственное отличие от функций POSITION и LOCATE то, что аргументы поменяны местами.

  • Далее рассмотрим функции, которые помогают получить подстроку.
  • Первыми рассмотрим сразу две функции LEFT и RIGHT, которые похожи по своему действию:
  • string LEFT(str string, len integer)
    string RIGHT(str string, len integer)

Функция LEFT возвращает len первых символов из строки str, а функция RIGHT столько же последних. Поддерживают многобайтовые символы.

  1. Пример:
  2. SELECT LEFT ('Москва', 3);
    Результат: Мос
    SELECT RIGHT ('Москва', 3);
  3. Результат: ква
  4. Далее рассмотрим одинаковые по итоговому результату функции SUBSTRING и MID:
  5. string SUBSTRING(str string, pos integer, len integer)
    string MID(str string, pos integer, len integer)

Функции позволяют получить подстроку строки str длиною len символов с позиции pos. В случае если параметр len не задан, то возвращается вся подстрока начиная с позиции pos.

Пример:

SELECT SUBSTRING ('г. Москва — столица России', 4, 6);
Результат: Москва
SELECT SUBSTRING ('г. Москва — столица России', 4);

  • Результат: Москва — столица России
  • Примеры с функцией MID не привожу, потому что результаты будут аналогичные.
  • Интересная функция SUBSTRING_INDEX:
  • string SUBSTRING_INDEX(str string, delim string, count integer)
Читайте также:  Как написать бакалаврскую работу по ГОСТу - требования к аннотации и структура

Функция возвращает подстроку строки str, полученную путем удаления символов, идущих после разделителя delim, находящимся в позиции count. Параметр count может быть как положительным, так отрицательным.

Если count положительный, то отсчет позиции разделителя будет вестись слева и удаляться будут символы находящиеся справа от разделителя. Если count отрицательный, то отсчет позиции разделителя ведется справа и удаляются символы находящиеся слева от разделителя.

Возможно, описание получилось слишком запутанным, но на примерах станет понятней.

Пример:

SELECT SUBSTRING_INDEX ('www.mysql.ru', '.', 1);
Результат: www

В данном примере функция находит, первое вхождения символа точки в строке «www.mysql.ru» и удаляет все символы, идущие после нее, включая сам разделитель.

SELECT SUBSTRING_INDEX ('www.mysql.ru', '.', 2);
Результат: www.mysql

Здесь функция ищет второе вхождение точки, удаляет все символы справа от нее и возвращает получившуюся подстроку. И еще один пример с отрицательным значением параметра count:

SELECT SUBSTRING_INDEX ('www.mysql.ru', '.', -2);
Результат: mysql.ru

В этом примере функция SUBSTRING_INDEX ищет вторую точку, отсчитывая позицию справа, удаляет символы слева от нее и выдает полученную подстроку.

Удаление пробелов из строки

  1. Для удаления лишних пробелов из начала и конца строки в языке SQL есть три функции.

  2. Функция LTRIM:
  3. string LTRIM(str string)
  4. Удаляет с начала строки str пробелы и возвращает результат.

  5. Функция RTRIM:
  6. string RTRIM(str string)

Также удаляет пробелы из строки str, только с конца. Обе функции поддерживают многобайтовые символы.

  • Пример:
  • SELECT LTRIM ('   текст   ');
    Результат: 'текст   '
    SELECT RTRIM ('   текст   ');
  • Результат: '  текст'
  • И третья функция TRIM позволяет сразу удалять пробелы из начала и из конца строки:
  • string TRIM([[BOTH | LEADING | TRAILING] [remstr] string FROM] str string)

Параметр str обязательный, остальные параметры не обязательные. В случае если задан только один параметр str, то возвращает строку str удалив пробелы из начала и конца строки одновременно.

  1. Пример:
  2. SELECT TRIM ('   текст   ');
    Результат: 'текст'
  3. С помощью пара метра remstr можно задавать символы или подстроки, которые будут удаляться из начала и конца строки. С помощью управляющих параметров BOTH, LEADING, TRAILING можно задавать откуда будут удаляться символы:
  • BOTH — удаляет подстроку remstr с начала и с конца строки;
  • LEADING — удаляет remstr с начала строки;
  • TRAILING — удаляет remstr с конца строки.
  • Пример:
  • SELECT TRIM (BOTH 'а' FROM 'текст');
    Результат: 'текст'
    SELECT TRIM (LEADING 'а' FROM 'текстааа');
    Результат: 'текстааа'
    SELECT TRIM (TRAILING 'а' FROM 'ааатекст');
  • Результат: 'ааатекст'
  • Функция SPACE позволяет получить строку состоящую из определенного количества пробелов:
  • string SPACE(n integer)
  • Возвращает строку, которая состоит из n пробелов.
  • Функция REPLACE нужна для замены заданных символов в строке:
  • string REPLACE(str string, from_str string, to_str string)

Функция заменяет в строке str все подстроки from_str на to_str и возвращает результат. Поддерживает многобайтные символы.

  1. Пример:
  2. SELECT REPLACE ( 'замена подстроки', 'подстроки', 'текста' )
    Результат: 'замена текста'
  3. Функция REPEAT:
  4. string REPEAT(str string, count integer)

Функция возвращает строку, которая состоит из count повторений строки str. Поддерживает многобайтовые символы.

  • Пример:
  • SELECT REPEAT ('w', 3);
    Результат: 'www'
  • Функция REVERSE переворачивает строку:
  • string REVERSE(str string)

Переставляет в строке str все символы с последнего на первый и возвращает результат. Поддерживает многобайтовые символы.

  1. Пример:
  2. SELECT REVERSE ('текст');
    Результат: 'тскет'
  3. Функция INSERT для вставки подстроки в строку:
  4. string INSERT(str string, pos integer, len integer, newstr string)

Возвращает строку полученную в результате вставки в строку str подстроки newstr с позиции pos. Параметр len указывает сколько символов будет удалено из строки str, начиная с позиции pos. Поддерживает многобайтовые символы.

  • Пример:
  • SELECT INSERT ('text', 2, 5, 'MySQL');
    Результат: 'tMySQL'
    'SELECT INSERT ('text', 2, 0, 'MySQL');
    Результат: 'tMySQLext'
    SELECT INSERT ('вставка текста', 2, 7, 'MySQL');
  • Результат: 'SELECT INSERT ('вставка текста', 2, 7, 'MySQL');'
  • Если вдруг понадобиться заеменить в тексте все заглавные буквы на прописные, то можно воспользоваться одной из двух функций:
  • string LCASE(str string) и string LOWER(str string)

Обе функции заменяют в строке str заглавные буквы на прописные и возвращают результат. И та и другая поддерживают многобайтовые символы.

  1. Пример:
  2. SELCET LOWER ('АБВГДеЖЗиКЛ');
    Результат:'абвгдежзикл'
  3. Если же наоборот необходимо прописные буквы заменить заглавными, то также можно применить одну из двух функцийй:
  4. string UCASE(str string) и  string UPPER (str string)

Функции возвращают строку str, заменив все прописные символы на заглавные. Также поддерживают многобайтовые символы.
Пример:

SELECT UPPER ('Абвгдежз');
Результат: 'АБВГДЕЖЗ'

Источник: https://webcodius.ru/sql/strokovye-funkcii-sql.html

Встроенные функции

Последнее обновление: 29.07.2017

Для работы со строками в T-SQL можно применять следующие функции:

  • LEN: возвращает количество символов в строке. В качестве параметра в функцию передается строка, для которой надо найти длину: SELECT LEN('Apple') — 5
  • LTRIM: удаляет начальные пробелы из строки. В качестве параметра принимает строку: SELECT LTRIM(' Apple')
  • RTRIM: удаляет конечные пробелы из строки. В качестве параметра принимает строку: SELECT RTRIM(' Apple ')
  • CHARINDEX: возвращает индекс, по которому находится первое вхождение подстроки в строке. В качестве первого параметра передается подстрока, а в качестве второго — строка, в которой надо вести поиск: SELECT CHARINDEX('pl', 'Apple') — 3
  • PATINDEX: возвращает индекс, по которому находится первое вхождение определенного шаблона в строке: SELECT PATINDEX('%p_e%', 'Apple') — 3
  • LEFT: вырезает с начала строки определенное количество символов. Первый параметр функции — строка, а второй — количество символов, которые надо вырезать сначала строки: SELECT LEFT('Apple', 3) — App
  • RIGHT: вырезает с конца строки определенное количество символов. Первый параметр функции — строка, а второй — количество символов, которые надо вырезать сначала строки: SELECT RIGHT('Apple', 3) — ple
  • SUBSTRING: вырезает из строки подстроку определенной длиной, начиная с определенного индекса. Певый параметр функции — строка, второй — начальный индекс для вырезки, и третий параметр — количество вырезаемых символов: SELECT SUBSTRING('Galaxy S8 Plus', 8, 2) — S8
  • REPLACE: заменяет одну подстроку другой в рамках строки. Первый параметр функции — строка, второй — подстрока, которую надо заменить, а третий — подстрока, на которую надо заменить: SELECT REPLACE('Galaxy S8 Plus', 'S8 Plus', 'Note 8') — Galaxy Note 8
  • REVERSE: переворачивает строку наоборот: SELECT REVERSE('123456789') — 987654321
  • CONCAT: объединяет две строки в одну. В качестве параметра принимает от 2-х и более строк, которые надо соединить: SELECT CONCAT('Tom', ' ', 'Smith') — Tom Smith
  • LOWER: переводит строку в нижний регистр: SELECT LOWER('Apple') — apple
  • UPPER: переводит строку в верхний регистр SELECT UPPER('Apple') — APPLE
  • SPACE: возвращает строку, которая содержит определенное количество пробелов

Например, возьмем таблицу:

CREATE TABLE Products
(
Id INT IDENTITY PRIMARY KEY,
ProductName NVARCHAR(30) NOT NULL,
Manufacturer NVARCHAR(20) NOT NULL,
ProductCount INT DEFAULT 0,
Price MONEY NOT NULL
);

И при извлечении данных применим строковые функции:

Источник: https://metanit.com/sql/sqlserver/8.1.php

Строковые функции (Transact-SQL) — SQL Server

  • 08/15/2016
  • Время чтения: 2 мин

ОБЛАСТЬ ПРИМЕНЕНИЯ: SQL Server База данных SQL Azure Azure Synapse Analytics (хранилище данных SQL) Parallel Data Warehouse APPLIES TO: SQL Server Azure SQL Database Azure Synapse Analytics (SQL DW) Parallel Data Warehouse

Следующие скалярные функции выполняют операции над входным строковым значением и возвращают строковое или числовое значение:The following scalar functions perform an operation on a string input value and return a string or numeric value:

Все встроенные строковые функции, кроме FORMAT, являются детерминированными.All built-in string functions except FORMAT are deterministic. Это значит, что они каждый раз возвращают одинаковое значение для одинакового набора входных параметров.

This means they return the same value any time they are called with a specific set of input values. Дополнительные сведения о детерминированности функций см. в статье Детерминированные и недетерминированные функции.

For more information about function determinism, see Deterministic and Nondeterministic Functions.

При передаче в строковые функции аргументов, которые не являются строковыми значениями, входной тип неявно преобразуется в текстовый тип данных.

When string functions are passed arguments that are not string values, the input type is implicitly converted to a text data type. Дополнительные сведения см. в статье Преобразование типов данных (ядро СУБД).

For more information, see Data Type Conversion (Database Engine).

См. также:See Also

Встроенные функции (Transact-SQL)Built-in Functions (Transact-SQL)

Отправить отзыв о следующем:

Этот продукт

Вы также можете оставить отзыв непосредственно на GitHub .

Источник: https://docs.microsoft.com/ru-RU/sql/t-sql/functions/string-functions-transact-sql?view=aps-pdw-2016

Ссылка на основную публикацию
Adblock
detector