Поиск…


Вступление

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

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

Синтаксис

  • CONCAT (string_value1, string_value2 [, string_valueN])
  • LTRIM (символьное выражение)
  • RTRIM (character_expression)
  • SUBSTRING (выражение, начало, длина)
  • ASCII (символьное выражение)
  • REPLICATE (string_expression, integer_expression)
  • REVERSE (string_expression)
  • ВЕРХНИЙ (символьное выражение)
  • TRIM (строка [characters FROM])
  • STRING_SPLIT (строка, разделитель)
  • STUFF (character_expression, start, length, replaceWith_expression)
  • REPLACE (string_expression, string_pattern, string_replacement)

замечания

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

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

Ссылка на String для PostgreSQL

Обрезать пустые пространства

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

В MSSQL нет единого TRIM()

SELECT LTRIM('  Hello  ') --returns 'Hello  '
SELECT RTRIM('  Hello  ') --returns '  Hello'
SELECT LTRIM(RTRIM('  Hello  ')) --returns 'Hello'

MySql и Oracle

SELECT TRIM('  Hello  ') --returns 'Hello'

Объединить

В стандарте ANSI / ISO SQL оператор для конкатенации строк имеет значение || , Этот синтаксис поддерживается всеми основными базами данных, кроме SQL Server:

SELECT 'Hello' || 'World' || '!'; --returns HelloWorld!

Многие базы данных поддерживают функцию CONCAT для объединения строк:

SELECT CONCAT('Hello', 'World'); --returns 'HelloWorld'

Некоторые базы данных поддерживают использование CONCAT для объединения более двух строк (Oracle не работает):

SELECT CONCAT('Hello', 'World', '!'); --returns 'HelloWorld!'

В некоторых базах данных должны быть отлиты или конвертированы нестроковые типы:

SELECT CONCAT('Foo', CAST(42 AS VARCHAR(5)), 'Bar'); --returns 'Foo42Bar'

Некоторые базы данных (например, Oracle) выполняют неявные конверсии без потерь. Например, CONCAT на CLOB и NCLOB дает NCLOB . CONCAT на число и varchar2 приводит к varchar2 и т. Д .:

SELECT CONCAT(CONCAT('Foo', 42), 'Bar') FROM dual; --returns Foo42Bar

Некоторые базы данных могут использовать нестандартный + оператор (но в большинстве + работает только для чисел):

SELECT 'Foo' + CAST(42 AS VARCHAR(5)) + 'Bar';

В SQL Server <2012, где CONCAT не поддерживается, + - единственный способ присоединиться к строкам.

Верхний и нижний регистр

SELECT UPPER('HelloWorld') --returns 'HELLOWORLD'
SELECT LOWER('HelloWorld') --returns 'helloworld'

Substring

Синтаксис: SUBSTRING ( string_expression, start, length ) . Обратите внимание, что строки SQL являются 1-индексированными.

SELECT SUBSTRING('Hello', 1, 2) --returns 'He'
SELECT SUBSTRING('Hello', 3, 3) --returns 'llo'

Это часто используется в сочетании с функцией LEN() чтобы получить последние n символов строки неизвестной длины.

DECLARE @str1 VARCHAR(10) = 'Hello', @str2 VARCHAR(10) = 'FooBarBaz';
SELECT SUBSTRING(@str1, LEN(@str1) - 2, 3) --returns 'llo'
SELECT SUBSTRING(@str2, LEN(@str2) - 2, 3) --returns 'Baz'

Трещина

Разделяет строковое выражение с помощью разделителя символов. Обратите внимание, что STRING_SPLIT() является табличной функцией.

SELECT value FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ');

Результат:

value
-----
Lorem
ipsum
dolor
sit
amet.

дрянь

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

Примечание: start позиция 1-индексация (вы начинаете индексирование с 1, а не 0).

Синтаксис:

STUFF ( character_expression , start , length , replaceWith_expression )  

Пример:

SELECT STUFF('FooBarBaz', 4, 3, 'Hello') --returns 'FooHelloBaz'

длина

SQL Server


LEN не считает конечное пространство.

SELECT LEN('Hello') -- returns 5

SELECT LEN('Hello '); -- returns 5

DATALENGTH подсчитывает конечное пространство.

SELECT DATALENGTH('Hello') -- returns 5

SELECT DATALENGTH('Hello '); -- returns 6

Следует отметить, однако, что DATALENGTH возвращает длину базового байтового представления строки, которая зависит, ia, от кодировки, используемой для хранения строки.

DECLARE @str varchar(100) = 'Hello ' --varchar is usually an ASCII string, occupying 1 byte per char
SELECT DATALENGTH(@str) -- returns 6

DECLARE @nstr nvarchar(100) = 'Hello ' --nvarchar is a unicode string, occupying 2 bytes per char
SELECT DATALENGTH(@nstr) -- returns 12

оракул


Синтаксис: Length (char)

Примеры:

SELECT Length('Bible') FROM dual; --Returns 5
SELECT Length('righteousness') FROM dual; --Returns 13
SELECT Length(NULL) FROM dual; --Returns NULL

См. Также: LengthB, LengthC, Length2, Length4

замещать

Синтаксис:

REPLACE( String для поиска , String для поиска и замены , String для размещения в исходной строке )

Пример:

SELECT REPLACE( 'Peter Steve Tom', 'Steve', 'Billy' ) --Return Values: Peter Billy Tom

ЛЕВО ПРАВО

Синтаксис:
LEFT (строковое выражение, целое число)
RIGHT (строковое выражение, целое число)

SELECT LEFT('Hello',2)  --return He  
SELECT RIGHT('Hello',2) --return lo

Oracle SQL не имеет функций LEFT и RIGHT. Их можно эмулировать с помощью SUBSTR и LENGTH.
SUBSTR (строковое выражение, 1, целое число)
SUBSTR (string-expression, length (string-expression) -integer + 1, integer)

SELECT SUBSTR('Hello',1,2)  --return He  
SELECT SUBSTR('Hello',LENGTH('Hello')-2+1,2) --return lo

ЗАДНИЙ ХОД

Синтаксис: REVERSE (строковое выражение)

SELECT REVERSE('Hello') --returns olleH

REPLICATE

Функция REPLICATE объединяет строку с самим собой определенное количество раз.

Синтаксис: REPLICATE (string-expression, integer)

SELECT REPLICATE ('Hello',4) --returns 'HelloHelloHelloHello'

REGEXP

MySQL 3.19

Проверяет, соответствует ли строка регулярному выражению (определенному другой строкой).

SELECT 'bedded' REGEXP '[a-f]' -- returns True

SELECT 'beam' REGEXP '[a-f]' -- returns False

Заменить функцию в SQL-запросе Select and Update

Функция Replace в SQL используется для обновления содержимого строки. Вызов функции REPLACE () для MySQL, Oracle и SQL Server.

Синтаксис функции Replace:

REPLACE (str, find, repl)

Следующий пример заменяет появление таблицы South with Southern in Employees:

Имя Адрес
Джеймс Южный Нью-Йорк
Джон Южный Бостон
Майкл Южный Сан-Диего

Выберите Заявление:

Если мы применим следующую функцию Replace:

SELECT 
    FirstName, 
    REPLACE (Address, 'South', 'Southern') Address
FROM Employees 
ORDER BY FirstName 

Результат:

Имя Адрес
Джеймс Южный Нью-Йорк
Джон Южный Бостон
Майкл Южный Сан-Диего

Заявление о обновлении:

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

Update Employees 
Set city = (Address, 'South', 'Southern');

Более общий подход заключается в использовании этого в сочетании с предложением WHERE следующим образом:

Update Employees 
Set Address = (Address, 'South', 'Southern')
Where Address LIKE 'South%';

ParseName

БАЗЫ ДАННЫХ : SQL Server

Функция PARSENAME возвращает определенную часть заданной строки (имя объекта). имя объекта может содержать строку, такую ​​как имя объекта, имя владельца, имя базы данных и имя сервера.

Подробнее MSDN: PARSENAME

Синтаксис

PARSENAME('NameOfStringToParse',PartIndex)

пример

Чтобы получить имя объекта, используйте индекс детали 1

SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',1)  // returns `ObjectName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',1)     // returns `Student`

Чтобы получить имя схемы, используйте параметр part 2

SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',2)  // returns `SchemaName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',2)     // returns `school`

Чтобы получить имя базы данных, используйте индекс детали 3

SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',3) // returns `DatabaseName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',3)    // returns `SchoolDatabase` 

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

SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',4)  // returns `ServerName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',4)     // returns `[1012-1111]`

PARSENAME возвращает null указанная часть отсутствует в заданной строке имени объекта

INSTR

Возвращает индекс первого вхождения подстроки (ноль, если не найден)

Синтаксис: INSTR (строка, подстрока)

SELECT INSTR('FooBarBar', 'Bar') -- return 4
SELECT INSTR('FooBarBar', 'Xar') -- return 0


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow