SqlServer参数化查询之where in和like实现之xml和D建站
导读:1建站知识在上一篇Sql Server参数化查询之where in和like实现详解中介绍了在Sql Server使用参数化查询where in的几种实现方案,遗漏了seo网站优化seo网站关键词优化。
方案5 使用xml参数 对sql server xml类型参数不熟悉的童鞋需要先了解下XQuery概念,这里简单提下XQuery 是用来从 XML 文档查找和提取元素及属性的语言,简单说就是用于查询xml的语言说到这就会牵着到XPath,其实XPath是XQuery的一个子集,XQuery 1.0 和 XPath 2.0 共享相同的数据模型,并支持相同的函数和运算符,XPath的方法均适用于XQuery,假如您已经学习了 XPath,那么学习 XQuery 也不会有问题。详见 XQuery概念了解后需要进一步了解下Sql Server对xml的支持函数,主要为query()、nodes()、exist()、value()、modify() ,详见
使用xml方式实现where in时有两种实现方式,使用value和exist,在这里推荐使用exist方法,msdn是这样描述的:D.使用 exist() 方法而不使用 value() 方法 由于性能原因,不在谓词中使用 value() 方法与关系值进行比较,而改用具有 sql:column() 的 exist()。 使用xml的value方法实现(不推荐)
复制代码 代码如下:
DataTable dt = new DataTable(); using (SqlConnection conn = new SqlConnection(connectionString)) { string xml = @" <root> <UserID>1</UserID> <UserID>2</UserID> <UserID>5</UserID> </root>"; SqlCommand comm = conn.CreateCommand(); //不推荐使用value方法实现,性能相对exist要低 comm.CommandText = @"select * from Users where exists ( select 1 from @xml.nodes('/root/UserID') as T(c) where T.c.value('text()[1]','int')= Users.UserID )"; //也可以这样写,结果是一样的 //comm.CommandText = @"select * from Users // where UserID in // ( // select T.c.value('text()[1]','int') from @xml.nodes('/root/UserID') as T(c) // ) comm.Parameters.Add(new SqlParameter("@xml", SqlDbType.Xml) { Value = xml }); using (SqlDataAdapter adapter = new SqlDataAdapter(comm)) { adapter.SelectCommand = comm; adapter.Fill(dt); } }
使用xml的exist方法实现(推荐)复制代码 代码如下:
DataTable dt = new DataTable(); using (SqlConnection conn = new SqlConnection(connectionString)) { string xml = @" <root> <UserID>1</UserID> <UserID>2</UserID> <UserID>5</UserID> </root>"; SqlCommand comm = conn.CreateCommand(); //使用xml的exist方法实现这样能够获得较高的性能 comm.CommandText = @"select * from Users where @xml.exist('/root/UserID[text()=sql:column(""UserID"")]')=1"; comm.Parameters.Add(new SqlParameter("@xml", SqlDbType.Xml) { Value = xml }); using (SqlDataAdapter adapter = new SqlDataAdapter(comm)) { adapter.SelectCommand = comm; adapter.Fill(dt); } }
列举下不同xml结构的查询方法示例,在实际使用中经常因为不同的xml结构经常伤透了脑筋声明: 本文由我的SEOUC技术文章主页发布于:2023-05-21 ,文章SqlServer参数化查询之where in和like实现之xml和D建站主要讲述参数,标签,SqlServer参数化查询之where in和网站建设源码以及服务器配置搭建相关技术文章。转载请保留链接: https://www.seouc.com/article/web_3982.html