Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения:SQL Server
Возвращает значение типа xs:boolean, указывающее, содержит ли значение $arg 1 строковое значение, указанное $arg 2.
Синтаксис
fn:contains ($arg1 as xs:string?, $arg2 as xs:string?) as xs:boolean?
Аргументы
$arg 1
Строка для проверки.
$arg 2
Подстрока для поиска.
Замечания
Если значение $arg 2 является строкой нулевой длины, функция возвращает значение True. Если значение $arg 1 является строкой нулевой длины, а значение $arg 2 не является строкой нулевой длины, функция возвращает false.
Если значение $arg 1 или $arg 2 является пустой последовательностью, аргумент рассматривается как строка нулевой длины.
Функция contains() использует параметры сортировки кодовых точек Юникода языка XQuery по умолчанию для сравнения строк.
Значение подстроки, указанное для $arg 2, должно быть меньше или равно 4000 символам. Если указанное значение больше 4000 символов, возникает динамическое условие ошибки, а функция contains() возвращает пустую последовательность вместо логического значения True или False. SQL Server не вызывает динамические ошибки в выражениях XQuery.
Чтобы получить нечувствительные сравнения регистра, можно использовать функции верхнего или нижнего регистра .
Дополнительные символы (суррогатные пары)
Поведение суррогатных пар в функциях XQuery зависит от уровня совместимости базы данных и, в некоторых случаях, от URI-кода пространства имен по умолчанию для функций. Дополнительные сведения см. в разделе "Функции XQuery с суррогатной поддержкой" статьи "Критические изменения функций ядро СУБД в SQL Server 2016". Дополнительные сведения см. в разделе ALTER DATABASE Compatibility Level (Transact-SQL) и Параметры сортировки и Поддержка Юникода.
Примеры
В этом разделе приведены примеры XQuery для экземпляров XML, хранящихся в различных столбцах типа XML в базе данных AdventureWorks.
А. Использование функции contains() языка XQuery для поиска указанной строки символов
В следующем запросе выполняется поиск продуктов, сводное описание которых содержат слово «Aerodynamic». Запрос возвращает ProductID и <Summary> элемент для таких продуктов.
--The product model description document uses
--namespaces. The WHERE clause uses the exit()
--method of the xml data type. Inside the exit method,
--the XQuery contains() function is used to
--determine whether the <Summary> text contains the word
--Aerodynamic.
USE AdventureWorks2022;
GO
WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd)
SELECT ProductModelID, CatalogDescription.query('
<Prod>
{ /pd:ProductDescription/@ProductModelID }
{ /pd:ProductDescription/pd:Summary }
</Prod>
') as Result
FROM Production.ProductModel
where CatalogDescription.exist('
/pd:ProductDescription/pd:Summary//text()
[contains(., "Aerodynamic")]') = 1
Результаты
ProductModelID Result
-------------- ---------
28 <Prod ProductModelID="28">
<pd:Summary xmlns:pd=
"https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription">
<p1:p xmlns:p1="http://www.w3.org/1999/xhtml">
A TRUE multi-sport bike that offers streamlined riding and
a revolutionary design. Aerodynamic design lets you ride with
the pros, and the gearing will conquer hilly roads.</p1:p>
</pd:Summary>
</Prod>