这个select语句怎么写

Kings_cool 2020-03-26 11:16:13
a01(int) a02(varchar) 想要的结果
1 1
1 1,2
1 1,2,3
2 1,2
2 1,2,3
2 2,3
2 3 这条
3 1,2,3
3 null 这条
3 1,2 这条

注:
选中所有a01不在a02里的行(a02不包含a01)。 但是两个字段数据类型不同,
sqlserver里我用instr报错无该内置函数,用 a02 not like '%'|a01|'%' 报错 %无法转换成int。换成 * 报同样的错
求助


...全文
61 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kings_cool 2020-03-26
  • 打赏
  • 举报
回复
引用 1 楼 Hello World, 的回复:
DECLARE @t TABLE(a01 INT NOT NULL,a02 VARCHAR(100) NULL)
INSERT @t(a01, a02)
VALUES(1,'1'),(1,'1,2'),(1,'1,2,3'),(2,'1,2 '),(2,'1,2,3'),
(2,'2,3 '),(2,'3'),(3,'1,2,3'),(3,null),(3,'1,2')
SELECT * FROM @t WHERE CHARINDEX(CAST(a01 AS VARCHAR(10)),COALESCE( a02,''))=0

感谢!
虽然没接触过charindex cast coalescce这些关键字,但是可以实现效果,回头我再查查这些什么原理
Hello World, 2020-03-26
  • 打赏
  • 举报
回复
DECLARE @t TABLE(a01 INT NOT NULL,a02 VARCHAR(100) NULL)
INSERT @t(a01, a02)
VALUES(1,'1'),(1,'1,2'),(1,'1,2,3'),(2,'1,2 '),(2,'1,2,3'),
(2,'2,3 '),(2,'3'),(3,'1,2,3'),(3,null),(3,'1,2')
SELECT * FROM @t WHERE CHARINDEX(CAST(a01 AS VARCHAR(10)),COALESCE( a02,''))=0

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧