我有一個ASP.NET應用程序需要使用列表和範圍搜索VARCHAR(20)列。換句話說,該輸入可以是這樣的:搜索列表,範圍
ABC,444,CD-EF,90-BA,HIJ
,結果需要是相當於:
SELECT * FROM table
WHERE
Col1 = 'ABC' OR
Col1 = '444' OR
Col1 BETWEEN 'CD' AND 'EF' OR
Col1 BETWEEN '90' AND 'BA' OR
Col1 = 'HIJ'
常規SQL列的排序順序是針對範圍是可接受的。這裏涉及兩個主要部分:
- 將參數從.NET發送到存儲過程。
- 使用SP中的參數進行搜索。
我已經考慮一些選擇,這不是相互排斥的:
- 的是,我可以發送字符串。沒有
array[] = SPLIT(',', @query)
或類似的,所以解析將是低水平的。我寧願在.NET端解析。 - 在.NET端,轉換爲XML,在SP中轉換爲表。
- 使用遊標瀏覽已經在表中的參數,執行單獨的查詢併合並結果。
- 創建動態where子句(SQL上側的1號,或.NET的一側)
動態在.NET端SQL似乎「易」的出路,但我不相信這是最好的。有什麼想法嗎?
我最終這樣做了。保持它的服務器端增加了一點可重用性,但這項工作的價值可以忽略不計。 – 2010-08-25 19:41:48