IT *_*her 2 sql-server-2008 xml sql-server xquery trim
我有一个带有 XML 列的数据库。我正在尝试更新(修剪) xml 列的 xml 值。我在 Windows、SQL Server 2008 Express 上运行。
我没有找到任何直接在 Xquery 中修剪的方法,所以我尝试通过选择该值。这是 SQL
select RTRIM(LTRIM(col2.value('(/Root/Row/Rowid/text())[1]','varchar(20)')))
from dbo.T1
Run Code Online (Sandbox Code Playgroud)
但是现在我不知道如何更新这个 xml 值。
有没有办法直接修剪xml值?如果不是,我该如何修剪价值?
我不是要更新表中的单行,而是要修剪表中所有行的 xml 值
您可以使用sql:column函数和公共表表达式 (CTE)来做到这一点,如下所示:
CREATE TABLE #tmp ( col2 XML )
INSERT INTO #tmp ( col2 )
VALUES ( '<Root>
<Row>
<Rowid>trim this value </Rowid>
</Row>
</Root>' )
SELECT 'before' s, *
FROM #tmp
;WITH cte AS
(
SELECT col2, RTRIM( LTRIM( col2.value('(/Root/Row/Rowid/text())[1]','VARCHAR(20)' ))) trimmedColumn
FROM #tmp
)
UPDATE cte
SET col2.modify('replace value of (Root/Row/Rowid/text())[1] with sql:column("trimmedColumn")')
SELECT 'after' s, *
FROM #tmp
-- Cleanup
DROP TABLE #tmp
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2345 次 |
| 最近记录: |