SQL Query XML column.   SQL 查询 xml 字段

知识共享许可协议
Work by Jianfei is licensed under a Creative Commons wei 3.0 Unported License.

 

 

1.  As we knew SQL Server has provided a serices of XML execution function,  we can using SQL query to get the field values directly. Please see following steps to create your own SQL xml query statement.

 
-- Get the XML column data, please case the ns0:Record statement is not a root node . See output #1
select Data from sct_DataSourceDatasetRecord where (DataSourceDatasetID = '117' or DataSourceDatasetID = '118' )
 
-- Get the XML node named as Investment,the pattern of "/" is a node filter. See output #2
SELECT   DataSourceDatasetRecordID, Data.query( ' //Investment ' as  InvesValue  from  sct_DataSourceDatasetRecord  where  (DataSourceDatasetID  =   ' 117 ' or  DataSourceDatasetID  =   ' 118 '
-- Get the XML node value using data function. See output #3
SELECT   DataSourceDatasetRecordID, Data.query( ' data(//Investment) ' as  InvesValue  from  sct_DataSourceDatasetRecord  where  (DataSourceDatasetID  =   ' 117 ' or  DataSourceDatasetID  =   ' 118 '

-- Get the XML node value query result using where condition. See output #3
select  DataSourceDatasetRecordID , InvesValue   from
(
SELECT   DataSourceDatasetRecordID, Data.query( ' data(//Investment) ' as  InvesValue  from  sct_DataSourceDatasetRecord  where  (DataSourceDatasetID  =   ' 117 ' or  DataSourceDatasetID  =   ' 118 ' ))  as  result  
where   Cast (InvesValue  as   varchar  ) =   ' c1 '

2. SQL query result.

 

 

More SQL对Xml字段的操作 Sample  Copy From : http://www.cnblogs.com/youring2/archive/2008/11/27/1342288.html

 

知识共享许可协议
Work by Jianfei is licensed under a Creative Commons wei 3.0 Unported License.

转载于:https://www.cnblogs.com/zencorn/archive/2011/05/19/2051078.html

Mybatis-Plus 对于 SQL Server 的 XML 类型的处理需要特殊的配置。具体步骤如下: 1. 在 pom.xml 文件中添加对 SQL Server 驱动的依赖: ```xml <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>${sqlserver.version}</version> </dependency> ``` 2. 在 mybatis-plus 的配置文件中添加对 SQL Server 数据库方言的配置,如下所示: ```xml <bean id="mybatisPlusConfig" class="com.baomidou.mybatisplus.core.MybatisConfiguration"> <property name="mapUnderscoreToCamelCase" value="true"/> <property name="databaseIdProvider" ref="databaseIdProvider"/> <property name="dbConfig" ref="dbConfig"/> <property name="sqlParserConfig" ref="sqlParserConfig"/> <property name="typeHandlersPackage" value="com.baomidou.mybatisplus.extension.handlers"/> <property name="dialect" value="sqlserver"/> </bean> ``` 3. 定义一个 TypeHandler,用于将 XML 类型的数据转换为字符串类型的数据,如下所示: ```java import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.SQLXML; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; public class SqlServerXmlTypeHandler extends BaseTypeHandler<String> { @Override public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException { SQLXML xml = ps.getConnection().createSQLXML(); xml.setString(parameter); ps.setSQLXML(i, xml); } @Override public String getNullableResult(ResultSet rs, String columnName) throws SQLException { SQLXML xml = rs.getSQLXML(columnName); if (xml == null) { return null; } return xml.getString(); } @Override public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException { SQLXML xml = rs.getSQLXML(columnIndex); if (xml == null) { return null; } return xml.getString(); } @Override public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { SQLXML xml = cs.getSQLXML(columnIndex); if (xml == null) { return null; } return xml.getString(); } } ``` 4. 在 mybatis-plus 的配置文件中注册该 TypeHandler,如下所示: ```xml <bean id="dbConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig.DbConfig"> <property name="typeHandler"> <util:list> <bean class="com.xxx.SqlServerXmlTypeHandler"/> </util:list> </property> </bean> ``` 完成以上配置后,就可以在 Mybatis-Plus 中使用 XML 类型了。例如,查询 XML 类型的字段: ```java List<User> userList = userMapper.selectList(new QueryWrapper<User>() .lambda() .select(User::getId, User::getName, User::getXmlContent) .eq(User::getId, 1)); for (User user : userList) { String xmlContent = user.getXmlContent(); // 处理 XML 类型的数据 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值