SQL Server 2012 представил новые строковые функции, которые предоставляют разработчикам больше гибкости и удобства при работе со строковыми значениями. В этой статье мы рассмотрим две из этих функций: FORMAT и CONCAT.
Использование функции FORMAT
Функция FORMAT позволяет форматировать значение с указанным форматом и необязательной культурой. Давайте рассмотрим несколько примеров:
DECLARE @TodaysDate DATETIME = GETDATE()
SELECT FORMAT ( @TodaysDate, 'd', 'en-US' ) AS [Использование культуры 'en-US']
SELECT FORMAT ( @TodaysDate, 'd', 'de-DE' ) AS [Использование культуры 'de-DE']
SELECT FORMAT ( @TodaysDate, 'd', 'en-IN' ) AS [Использование культуры 'en-IN']
SELECT FORMAT ( @TodaysDate, 'd', 'en-CA' ) AS [Использование культуры 'en-CA']
DECLARE @ProductCost INT = 100
SELECT FORMAT ( @ProductCost, 'c', 'en-US' ) AS [Использование культуры 'en-US']
SELECT FORMAT ( @ProductCost, 'c', 'de-DE' ) AS [Использование культуры 'de-DE']
SELECT FORMAT ( @ProductCost, 'c', 'en-IN' ) AS [Использование культуры 'en-IN']В приведенном выше примере мы используем функцию FORMAT для форматирования значения даты и числового значения. Указывая различные культуры, мы можем форматировать значения в соответствии с различными региональными конвенциями.
Использование функции CONCAT
Функция CONCAT позволяет объединять два или более строковых значения. Она неявно преобразует все аргументы в строковые типы, а затем объединяет их. Давайте рассмотрим пример:
SELECT
TOP 10
CONCAT( PP.FirstName ,' ',
PP.LastName ,',',
PA.AddressLine1 ,',',
PA.AddressLine2 ,'',
PA.City ,',',
PA.PostalCode)
FROM Person.Address PA
INNER JOIN Person.BusinessEntityAddress PBEA
ON PA.AddressID = PBEA.AddressID
INNER JOIN Person.Person PP
ON PBEA.BusinessEntityID = PP.BusinessEntityIDВ приведенном выше примере мы используем функцию CONCAT для объединения имени, фамилии, адреса, города и почтового индекса из 10 записей из таблицы Person.Address в базе данных AdventureWorks2008R2.
Разработчики также могут использовать функцию CONCAT с оператором PRINT, как показано ниже:
SET NOCOUNT ON
SELECT CONCAT('MSSQLTips опубликовал этот совет ', GETDATE())
GO
PRINT CONCAT('MSSQLTips опубликовал этот совет ', GETDATE())
GO
SET NOCOUNT OFFПриведенный выше пример демонстрирует, как использовать функцию CONCAT для создания строки и печати ее с помощью оператора PRINT.
Заключение
Функции FORMAT и CONCAT, введенные в SQL Server 2012, предоставляют мощные возможности по манипулированию строками. Используя эти функции, разработчики могут легко форматировать значения и объединять строки, делая свой SQL-код более лаконичным и эффективным.