Sql-Server
在 MS SQL Server 中修剪 xml 列中的值
我有一個帶有 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
但現在我不知道如何更新這個 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