如何在查询中对表中的列应用 trim

  • 本文关键字:应用 trim 查询 sql xml oracle
  • 更新时间 :
  • 英文 :


我在一行中有 TEST1 列的数据(表名:表测试(,例如

<n0:RouterName Value="ST_APOP"/>
<n0:ExtZone/>
<n0:SalesOrders>
<n0:SalesOrder ValidationResult="SUCCESS">
<n0:SalesOrderID Value="4F47N006800000_0261"/>

我需要在选择查询中选择4F47N006800000_0261值。如何修剪它。

您的 XML 无效 - 因此,让我们添加结束标记:

CREATE TABLE your_table ( xml ) AS
SELECT '<n0:RouterName Value="ST_APOP"/>
<n0:ExtZone/>
<n0:SalesOrders>
<n0:SalesOrder ValidationResult="SUCCESS">
<n0:SalesOrderID Value="4F47N006800000_0261"/>
</n0:SalesOrder>
</n0:SalesOrders>' FROM DUAL

查询

SELECT SalesOrderId
FROM   your_table t,
       XMLTABLE(
         XMLNAMESPACES( 'http://your.server/namespaces/n0' AS "n0" ),
         '//root/n0:SalesOrders/n0:SalesOrder'
         PASSING XMLTYPE(
                   '<root xmlns:n0="http://your.server/namespaces/n0">'
                   || t.xml
                   || '</root>'
                 )
         COLUMNS SalesOrderId VARCHAR2(100) PATH '//n0:SalesOrderID/@Value'
       );

输出

SALESORDERID
-------------------
4F47N006800000_0261

db<>在这里小提琴

试试这个:

select   
substr(column_name,instr(column_name,'Value',1,2)+7,length(substr(column_name,instr(column_name,'Value',1,2)+7))-3)
 from
test1

最新更新