2016-09-27 27 views
0

在sql中比較兩個逗號分隔值,我們可以通過使用Split類型的函數來完成(也可以做三列!) 但是,如果不使用函數,那有可能嗎?在SQL中比較三個逗號分隔值

讓我舉個例子。

enter image description here

查詢應檢查以下條件

(1)選擇從表-1即計劃的任務。但未完成或拒絕列。

(2)僅返回強制任務

使用分割功能(UD功能)或光標正在查詢更加複雜,燕子的時候也是如此。

有沒有其他的解決方案來完成這件事? 單個查詢可能嗎?

在此先感謝。

+0

mysql或sql-server? – Jens

+1

*是可能的* - 是的 - 把每個逗號分隔的值放在另一個表的自己的行中,這是它應該完成的方式。目前的設計可能會成爲維護的噩夢。 –

+0

@AlexK。好的,謝謝 –

回答

3

不,沒有靈丹妙藥。如果你真的想提高性能,這可能是正常化(也許索引)。而且,更多的標準查詢可以在沒有拆分功能的情況下工

根據具體情況,它可能會有所不同,但從您顯示的內容來看,我將爲每個與table1相關的任務創建一行任務表,該任務顯示爲包含許多任務的「作業」或「項目」。

只是在表中意味着他們是強制性,拒絕和完成列的計劃任務。

如果你不能規範化這些數據,那麼你可能會被分割函數卡住。有一些關於如何通過分離函數獲得優異性能的文章,而CLR函數似乎運行得非常快。

+0

銀子彈,這樣的經典...這讓我想起了很多關於這篇文章的文章:http://weblogs.asp.net/alex_papadimoulis/408925 – Hackerman