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

Tsql теория > Строковые функции (Transact-SQL)
17.04.2013 10:58:51



Статья:

ASCII Возвращает код ASCII первого символа указанного символьного выражения.

ASCII ( character_expression )

Следующий пример принимает набор символов ASCII и возвращает значение ASCII и символ CHAR для каждого символа в строке Du monde entier.

SET TEXTSIZE 0
SET NOCOUNT ON
-- Create the variables for the current character string position 
-- and for the character string.
DECLARE @position int, @string char(15)
-- Initialize the variables.
SET @position = 1
SET @string = 'Du monde entier'
WHILE @position <= DATALENGTH(@string)
   BEGIN
   SELECT ASCII(SUBSTRING(@string, @position, 1)),
      CHAR(ASCII(SUBSTRING(@string, @position, 1)))
    SET @position = @position + 1
   END
SET NOCOUNT OFF
GO
 
CHAR Преобразует код int ASCII в символ.
CHAR ( integer_expression )

В следующем примере отображается значение ASCII и символ для каждого символа в строке New Moon.

SET TEXTSIZE 0
-- Create variables for the character string and for the current 
-- position in the string.
DECLARE @position int, @string char(8)
-- Initialize the current position and the string variables.
SET @position = 1
SET @string = 'New Moon'
WHILE @position <= DATALENGTH(@string)
   BEGIN
   SELECT ASCII(SUBSTRING(@string, @position, 1)), 
      CHAR(ASCII(SUBSTRING(@string, @position, 1)))
   SET @position = @position + 1
   END
GO
 
CHARINDEX  Ищет в выражении другое выражение и возвращает его начальную позицию, если оно найдено.
CHARINDEX ( expressionToFind ,expressionToSearch [ , start_location ] ) 

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

USE AdventureWorks2012;
GO
DECLARE @document varchar(64);

SELECT @document = 'Reflectors are vital safety' +
                   ' components of your bicycle.';
SELECT CHARINDEX('bicycle', @document);
GO

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

CONCAT ( string_value1, string_value2 [, string_valueN ] )

Использование CONCAT

SELECT CONCAT ( 'Happy ', 'Birthday ', 11, '/', '25' ) AS Result;

Ниже приводится результирующий набор.

Result
-------------------------
Happy Birthday 11/25

(1 row(s) affected)

Б.Использование CONCAT со значениями NULL

CREATE TABLE #temp (
    emp_name nvarchar(200) NOT NULL,
    emp_middlename nvarchar(200) NULL,
    emp_lastname nvarchar(200) NOT NULL
);
INSERT INTO #temp VALUES( 'Name', NULL, 'Lastname' );
SELECT CONCAT( emp_name, emp_middlename, emp_lastname ) AS Result
FROM #temp;

 

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

DIFFERENCE ( character_expression , character_expression )

В первой части следующего примера сравниваются значения SOUNDEX двух очень похожих строк. Для параметров сортировки Latin1_General функция DIFFERENCE возвращает значение 4. Во второй части следующего примера сравниваются значения SOUNDEX двух абсолютно разных строк. Для параметров сортировки Latin1_General функция DIFFERENCE возвращает значение 0.

USE AdventureWorks2012;
GO
-- Returns a DIFFERENCE value of 4, the least possible difference.
SELECT SOUNDEX('Green'), SOUNDEX('Greene'), DIFFERENCE('Green','Greene');
GO
-- Returns a DIFFERENCE value of 0, the highest possible difference.
SELECT SOUNDEX('Blotchet-Halls'), SOUNDEX('Greene'), DIFFERENCE('Blotchet-Halls', 'Greene');
GO
 
FORMAT Возвращает значение, указанное в формате, языке и региональных параметрах (необязательно) в SQL Server 2012. Для выполнения форматирования значения даты, времени и чисел с учетом локали в виде строк используется функция FORMAT. Для общих преобразований типов данных продолжайте использовать CAST и CONVERT.
FORMAT ( value, format [, culture ] )

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

DECLARE @d DATETIME = '10/01/2011';
SELECT FORMAT ( @d, 'd', 'ru-RU' ) AS 'US English Result'
      ,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result'
      ,FORMAT ( @d, 'd', 'de-de' ) AS 'German Result'
      ,FORMAT ( @d, 'd', 'zh-cn' ) AS 'Simplified Chinese (PRC) Result'; 
  
SELECT FORMAT ( @d, 'D', 'ru-RU' ) AS 'US English Result'
      ,FORMAT ( @d, 'D', 'en-gb' ) AS 'Great Britain English Result'
      ,FORMAT ( @d, 'D', 'de-de' ) AS 'German Result'
      ,FORMAT ( @d, 'D', 'zh-cn' ) AS 'Chinese (Simplified PRC) Result'; 
LEFT Возвращает указанное число символов символьного выражения слева.
LEFT ( character_expression , integer_expression )

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

USE AdventureWorks2012;
GO
SELECT LEFT(Name, 5) 
FROM Production.Product
ORDER BY ProductID;
GO
LEN Возвращает количество символов указанного строкового выражения, исключая конечные пробелы.
LEN ( string_expression )
 
LOWER Возвращает символьное выражение после преобразования символов нижнего регистра в символы верхнего регистра.
LOWER ( character_expression )
 
LTRIM  Возвращает символьное выражение после удаления начальных пробелов.
LTRIM ( character_expression )
 
NCHAR Возвращает символ Юникода с указанным целочисленным кодом, определенным в стандарте Юникода.
NCHAR ( integer_expression )
 
PATINDEX Для любого допустимого символьного или текстового типа данных возвращает начальную позицию первого вхождения шаблона в указанном выражении или нуль, если шаблон не найден.
PATINDEX ( '%pattern%' , expression )
 
QUOTENAME Возвращает строку в Юникоде с разделителями, образуя из строки ввода правильный идентификатор с разделителем SQL Server.
QUOTENAME ( 'character_string' [ , 'quote_character' ] ) 
 
REPLACE Заменяет все вхождения указанного строкового значения другим строковым значением.
REPLACE ( string_expression , string_pattern , string_replacement )

На следующем примере показано, как строка cde в строке abcdefghi заменяется на xxx.

SELECT REPLACE('abcdefghicde','cde','xxx');
GO
REPLICATE Повторяет значение строки указанное число раз.
REPLICATE ( string_expression ,integer_expression ) 
 
REVERSE Возвращает строковое значение, где символы переставлены в обратном порядке справа налево.
REVERSE ( string_expression )

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

USE AdventureWorks2012;
GO
SELECT FirstName, REVERSE(FirstName) AS Reverse
FROM Person.Person
WHERE BusinessEntityID < 5
ORDER BY FirstName;
GO
 
RIGHT Возвращает указанное число символов символьной строки справа.
RIGHT ( character_expression , integer_expression )
 
RTRIM Возвращает строковое выражение, удаляя все завершающие пробелы.
RTRIM ( character_expression )
 

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

DECLARE @string_to_trim varchar(60);
SET @string_to_trim = 'Four spaces are after the period in this sentence.    ';
SELECT @string_to_trim + ' Next string.';
SELECT RTRIM(@string_to_trim) + ' Next string.';
GO
 
SOUNDEX Возвращает четырехсимвольный код (SOUNDEX) для оценки степени сходства двух строк.
SOUNDEX ( character_expression )
 
SPACE Возвращает строку пробелов.
SPACE ( integer_expression )
 
STR Возвращает символьные данные, преобразованные из числовых данных.
STR ( float_expression [ , length [ , decimal ] ] )
Функция STUFF вставляет одну строку в другую. Она удаляет указанное количество символов первой строки в начальной позиции и вставляет на их место вторую строку.
STUFF ( character_expression , start , length , replaceWith_expression )
 
SUBSTRING Возвращает часть символьного, двоичного, текстового или графического выражения в SQL Server 2012.
SUBSTRING ( expression ,start , length )

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

USE AdventureWorks2012;
GO
SELECT LastName, SUBSTRING(FirstName, 1, 1) AS Initial
FROM Person.Person
WHERE LastName like 'Barl%'
ORDER BY LastName;
 
UNICODE Возвращает целочисленное значение, соответствующее стандарту Юникод, для первого символа входного выражения.
UNICODE ( 'ncharacter_expression' )
 
UPPER Возвращает символьное выражение, в котором символы нижнего регистра преобразованы в символы верхнего регистра.
UPPER ( character_expression )