2
我試圖使用IN表達式來查詢xml列。我還沒有找到做這樣的查詢的自帶XQuery的方式,所以我已經試過兩種解決方法:在MSSQLServer 2005中使用XQuery實現IN查詢
落實IN查詢作爲OR的這樣的串聯:
WHERE Data.exist('/Document/ParentKTMNode[text() = sql:variable("@Param1368320145") or text() = sql:variable("@Param2043685301") or ...
實施在查詢中使用String FN:包含(...)方法是這樣的:
WHERE Data.exist('/Document/Field2[fn:contains(sql:variable("@Param1412022317"), .)]') = 1
如果給定參數一個(長)字符串,其值由「|」分隔
問題是,版本1不適用於超過50個參數。服務器引發內存不足異常。版本2.工作,但非常非常慢。
有沒有人有3個想法?要將問題描述得更加完整:給定任何sql本機類型的值列表,選擇其xml列在xml中的特定字段處具有給定值之一的所有行。
這是一個有趣的想法。在我的測試中,查詢速度非常快。我不知道,如果我可以實現這一點,因爲它需要一個真正的表格,我需要以某種方式插入我首先要查找的鍵。我不知道,如果這可以適應我已經得到的代碼。但看起來,這絕對是一條路。 – Mario