Усовершенствования строк и других функций
- 5 мин
В SQL Server 2022 мы добавили новые функции в несколько функций обработки строк, расширяя их для повышения гибкости. Ранее SQL Server предоставлял функции LTRIM
, RTRIM
и TRIM
для удаления начальных и конечных пробелов. В SQL Server 2022 мы улучшили эти функции, чтобы указать набор символов для удаления. Кроме того, функция STRING_SPLIT
теперь предлагает необязательный параметр для возврата значения индекса позиции каждой подстроки в входной строке.
LTRIM, RTRIM и TRIM
В SQL Server 2022 мы улучшили функции LTRIM
и RTRIM
необязательным параметром символов, который позволяет указать набор символов, которые будут удалены из начала или конца строки. Мы также улучшили функцию TRIM
, чтобы удалить указанные символы из начала, конца или обеих строк с помощью ключевых слов LEADING
, TRAILING
или BOTH
.
РАЗДЕЛИТЬ_СТРОКУ
SQL Server 2022 добавляет третий необязательный порядковый параметр в конец STRING_SPLIT
функции, что позволяет создать 1-й массив индексов значений для позиции каждой подстроки в входной строке. По умолчанию функция имеет значение нулевого или отключенного. Чтобы включить его, задайте для него значение 1 или включено. Выходные строки могут находиться в любом порядке, так как порядок сортировки не гарантируется в соответствии с порядком исходной строки.
Легко удалять префиксы и постфиксные символы с помощью LTRIM, RTRIM и TRIM
Маркетинговой команде нужно отправить несколько флаеров нашим клиентам для нашей последней праздничной распродажи, но они хотят узнать, есть ли у кого-то из них почтовый ящик. Они просят нашу команду DBA перечислить наших клиентов, адрес которого является P.O. Box, и вернуть имя клиента, почтовый индекс и номер. При использовании новой возможности LTRIM
, RTRIM
и TRIM
вы сможете легко вернуть запрошенные данные.
SELECT P.FirstName + ' ' + ISNULL(P.MiddleName,'') + ' ' + P.LastName AS Name
, LTRIM(A.AddressLine1,'POBoxN.# ') AS POBox
, PostalCode
FROM AdventureWorks2012.Sales.Customer C
JOIN AdventureWorks2012.Person.Person P ON P.BusinessEntityID = C.PersonID
JOIN AdventureWorks2012.Person.BusinessEntityAddress BEA on P.BusinessEntityID = BEA.BusinessEntityID
JOIN AdventureWorks2012.Person.Address A ON A.AddressID = BEA.AddressID
WHERE LOWER(AddressLine1) like 'p%o%box%'
Результаты:
Имя | POBox | Почтовый индекс |
---|---|---|
Чейз Кокс | 8070 | 92806 |
Даррен Прасад | 1052 | 4169 |
Джордин Н Гриффин | 9178 | 98027 |
Барбара Су | 2851 | 4217 |
Судьба Джонс | 9257 | 4217 |
Николь Джей Брайант | 4559 | 98020 |
Клейтон Ананда | 5413 | Y024 1GF |
Сара V Дэвис | 1053 | 98168 |
Натан Нельсон | 2851 | 97005 |
Эшли Н Чанде | 2513 | 2113 |
Cedric Huang | 9257 | 90210 |
Джеффри J Lin | 4559 | 7001 |
Дуглас Подрам | 8070 | 5023 |
Стефани Н Янг | 2513 | 98312 |
Алексия Вашингтон | 1052 | V8P |
Рэнди Джей Чжао | 2162 | 2450 |
Айдан Хендерсон | 5413 | 98168 |
Нил N Ruiz | 9178 | W10 6BL |
В этом примере мы использовали функцию LTRIM
для очистки P.O. Box путем удаления нежелательных префиксов, предоставляя команде маркетинга запрошенные данные. Обратите внимание, что символы, входящие в состав набора для поиска, включают все символы из возможных префиксов, которые мы определили.
НАИБОЛЬШЕЕ и НАИМЕНЬШЕЕ
Функции GREATEST
и LEAST
являются новыми для SQL Server 2022, и возвращают максимальные и минимальные значения из списка выражений соответственно.
Благодаря усовершенствованиям LTRIM
, RTRIM
, TRIM
и STRING_SPLIT
в SQL Server 2022 можно повысить возможности запросов к базе данных. Кроме того, введение функций GREATEST
и LEAST
обеспечивает более эффективную обработку и анализ данных.