Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения:SQL Server
Возвращает часть значения $sourceString, начиная с позиции, указанной значением $startingLoc, и продолжается для числа символов, указанных значением $length.
Синтаксис
fn:substring($sourceString as xs:string?,
$startingLoc as xs:decimal?) as xs:string?
fn:substring($sourceString as xs:string?,
$startingLoc as xs:decimal?,
$length as xs:decimal?) as xs:string?
Аргументы
$sourceString
Исходная строка.
$startingLoc
Начальная позиция в исходной строке, с которой начинается подстрока. Если это значение отрицательно или равно нулю, символы возвращаются с начала строки. Если длина $sourceString превышает длину, возвращается строка нулевой длины.
$length
Количество получаемых символов [дополнительно]. Если он не указан, он возвращает все символы из расположения, указанного в $startingLoc до конца строки.
Замечания
Версия этой функции с тремя аргументами возвращает символы строки $sourceString, позиции которых $p удовлетворяют следующим условиям:
fn:round($startingLoc) <= $p < fn:round($startingLoc) + fn:round($length)
Значение $length может быть больше числа символов в значении $sourceString после начальной позиции. В этом случае подстрока возвращает символы до конца $sourceString.
Первый символ строки расположен в позиции 1.
Если значение $sourceString является пустой последовательностью, она обрабатывается как строка нулевой длины. В противном случае, если $startingLoc или $length является пустой последовательностью, возвращается пустая последовательность.
Дополнительные символы (суррогатные пары)
Поведение суррогатных пар в функциях XQuery зависит от уровня совместимости базы данных и, в некоторых случаях, от URI-кода пространства имен по умолчанию для функций. Дополнительные сведения см. в разделе "Функции XQuery с суррогатной поддержкой" статьи "Критические изменения функций ядро СУБД в SQL Server 2016". Дополнительные сведения см. в разделе ALTER DATABASE Compatibility Level (Transact-SQL) и Параметры сортировки и Поддержка Юникода.
Ограничения реализации
SQL Server требует, чтобы параметры $startingLoc и $length были типа xs:decimal вместо xs:double.
SQL Server позволяет $startingLoc и $length быть пустой последовательностью, так как пустая последовательность является возможным значением в результате динамических ошибок, сопоставленных с ().
Примеры
В этом разделе приведены примеры XQuery для экземпляров XML, хранящихся в различных столбцах типов XML в AdventureWorks2025 базе данных.
А. Использование функции XQuery substring() для получения частичного резюме о модели продукта
Запрос извлекает первые 50 символов текста, описывающего модель продукта, <Summary> элемент в документе.
WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd)
SELECT ProductModelID, CatalogDescription.query('
<Prod>{ substring(string((/pd:ProductDescription/pd:Summary)[1]), 1, 50) }</Prod>
') as Result
FROM Production.ProductModel
where CatalogDescription.exist('/pd:ProductDescription') = 1;
Обратите внимание на следующие данные из предыдущего запроса:
Функция string() возвращает строковое значение<
Summary> элемента. Эта функция используется, так как элемент содержит текст и подэлементы (элементы форматирования HTML), а также так как <Summary> эти элементы будут пропускаться и извлекать весь текст.Функция подстроки () извлекает первые 50 символов из строкового значения, полученного строковым ().
Частичный результат:
ProductModelID Result
-------------- ----------------------------------------------------
19 <Prod>Our top-of-the-line competition mountain bike.</Prod>
23 <Prod>Suitable for any type of riding, on or off-roa</Prod>
...