在单个单元格中根据多个条件选择记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在单个单元格中根据多个条件选择记录相关的知识,希望对你有一定的参考价值。
我正在使用一个设置为显示多个值的数据库,用逗号分隔,如下所示:
txtSiblingsYearList
7,4
9,6
8,3,N
8,3,N
5,3
5,3
我需要能够查询这个并且只返回至少有2个R,N,1,2,3,4,5,6的记录
鉴于数据存储在数据库表中的方式,我不确定这是否可以完成。有谁知道这样做的方法。我当前的查询如下:
SELECT
[txtSchoolID]
,[txtTitle]
,[txtForename]
,[txtSurname]
,[txtForm]
,[intNCYear]
,[intFamily]
,[txtSiblingsIDList]
,[txtSiblingsNameList]
,[txtSiblingsFormList]
,[txtSiblingsYearList]
FROM [iSAMS].[dbo].[TblPupilManagementPupils]
Where (intSystemStatus = 1)
AND (intNCYear <7)
AND (txtSchoolID NOT LIKE txtSiblingsIDList)
Order By intFamily
任何帮助赞赏。
答案
您不应该以逗号分隔的字符串存储值列表。这不是SQL的做事方式。生成的查询无法优化,字符串函数不是SQL的强项。
如果你坚持这种格式,你可以加上匹配的数量:
where ( (case when ',' + txtSiblingsYearList + ',' like '%,R,%' then 1 else 0 end) +
(case when ',' + txtSiblingsYearList + ',' like '%,N,%' then 1 else 0 end) +
(case when ',' + txtSiblingsYearList + ',' like '%,1,%' then 1 else 0 end) +
. . .
) >= 2
以上是关于在单个单元格中根据多个条件选择记录的主要内容,如果未能解决你的问题,请参考以下文章