2016-09-27 28 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