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和網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_3982.html