sql-server - 如何获取包含在sql中逗号分隔值列中的数据
问题描述
我想传递一个 clm_id 并希望包含该 clm_id 的表中的数据像我传递 2012(clm_id) 并希望输出包含逗号分隔值的 2012 的数据。
我想要的是在第一个表中有重复的 clm_id 我想要 id 具有重复值的数据,包括逗号分隔值。
像
id clm_id
1 2011,2012
2 2012,2013
3 2012
输出想要:
id clm_id
1 2012
2 2012
3 2012
像包含 2012 clm_id 的 id(1,2,3)
我有类似的查询,
SELECT *
FROM table1
WHERE ( clm_id in ('2012'))
但没有从逗号分隔值中获取值
解决方案
使用喜欢(https://docs.microsoft.com/en-us/sql/t-sql/language-elements/like-transact-sql?view=sql-server-2017)和案例(https:// docs.microsoft.com/en-us/sql/t-sql/language-elements/case-transact-sql?view=sql-server-2017)
WITH tmp (id, clm_id) AS
(
SELECT 1, '2011,2012'
UNION
SELECT 2, '2012,2013'
UNION
SELECT 3, '2012'
)
SELECT
tmp.id,
CASE
WHEN tmp.clm_id LIKE '%2012%'
THEN '2012'
ELSE ''
END AS clm_id
FROM tmp
如果你有 SQL Server 2016 或更高版本,你可以使用一个漂亮的新功能:
SELECT
id, cs.value
FROM tmp CROSS APPLY
STRING_SPLIT(tmp.clm_id,',') cs
WHERE cs.value='2012'
推荐阅读
- bash - bash 脚本中的变量是指针吗?或实现为 C 中的指针?
- javascript - npm install 失败并显示消息“错误:套接字挂起”
- php - ubuntu 上 symfony 的 Nginx 配置
- web-scraping - 自动化从网页抓取元素的过程
- grafana - Grafana Singlestat Max 不匹配具有相同查询的 Graph
- javascript - catch 块上调度函数的行为
- javascript - 是否可以在字符串模板中插入 Javascript 正则表达式匹配?
- ruby-on-rails - 在 aws docker 容器中访问 rails 控制台
- google-sheets - 编写谷歌表格函数以仅适用于更改的行
- android - Android导航架构:在不保留活动选项时崩溃