学生表student
stuid name age
01 xp 20
02 pan 12
学生属性表
id stuid type
1 01 A
2 01 b
3 01 C
4 02 A
5 02 C
如何得到type是既是A、又是B、又是C的学生(即01号学生)。
依次类推,如何根据客户对type的输入,得到相应的查询记录。比如客户输入A、C就得到既是A又是C的学生(即01和02),客户输入A、B就得既是A、又是B的学生(即01)
解答:
--創建測試環境
Create Table 学生属性表
(id Int,
stuid Char(2),
type Varchar(10))
--插入數據
Insert 学生属性表 Select 1, '01', 'A'
Union All Select 2, '01', 'b'
Union All Select 3, '01', 'C'
Union All Select 4, '02', 'A'
Union All Select 5, '02', 'C'
GO
--測試
Declare @type Varchar(1000)
Select @type = 'A,B,C'
Select stuid From 学生属性表 Where CharIndex(type, @type) > 0 Group By stuid Having Count(stuid) = Len(@type) - Len(Replace(@type, ',', '')) + 1
Select @type = 'A,C'
Select stuid From 学生属性表 Where CharIndex(type, @type) > 0 Group By stuid Having Count(stuid) = Len(@type) - Len(Replace(@type, ',', '')) + 1
GO
--刪除測試環境
Drop Table 学生属性表
--結果
/*
stuid
01
stuid
01
02
*/
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步