如果您有一个varchar字段,那么您可以很容易地执行SELECT * FROM TABLE WHERE ColumnA LIKE '%Test%'
来查看该列是否包含某个字符串。
如何为XML类型做到这一点呢?
我有以下代码,它只返回具有'Text‘节点的行,但我需要在该节点内进行搜索
select * from WebPageContent where data.exist('/PageContent/Text') = 1
发布于 2014-06-04 16:29:22
另一种选择是将XML作为字符串进行搜索,方法是将其转换为字符串,然后使用LIKE。但是,由于计算列不能是WHERE子句的一部分,您需要将其包装在另一个SELECT中,如下所示:
SELECT * FROM
(SELECT *, CONVERT(varchar(MAX), [COLUMNA]) as [XMLDataString] FROM TABLE) x
WHERE [XMLDataString] like '%Test%'
发布于 2009-12-02 22:40:00
这是我将使用的基于marc_s的答案:
SELECT
SUBSTRING(DATA.value('(/PAGECONTENT/TEXT)[1]', 'VARCHAR(100)'),PATINDEX('%NORTH%',DATA.value('(/PAGECONTENT/TEXT)[1]', 'VARCHAR(100)')) - 20,999)
FROM WEBPAGECONTENT
WHERE COALESCE(PATINDEX('%NORTH%',DATA.value('(/PAGECONTENT/TEXT)[1]', 'VARCHAR(100)')),0) > 0
返回搜索条件所在的搜索的子字符串
https://stackoverflow.com/questions/1832987
复制相似问题