首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从逗号分隔的列表中选择

从逗号分隔的列表中选择
EN

Stack Overflow用户
提问于 2020-05-31 03:10:42
回答 2查看 58关注 0票数 0

我有一张桌子,表1,

我想选择与区域3相邻的所有区域。我的问题是什么?相邻列是CHAR列。

我知道表不应该以这种方式设置,但这是我必须使用的,因为我没有访问数据库的权限。

EN

回答 2

Stack Overflow用户

发布于 2020-05-31 03:12:08

修复你的数据模型!有很多原因导致这一点被打破。

但是如果你坚持使用它,你可以使用:

代码语言:javascript
复制
select t.*
from t
where ',' + neighbor + ',' like '%,3,%';

也可以使用string_split()取消嵌套值

代码语言:javascript
复制
select t.*
from t cross apply
     string_split(t.neighbor, ',') s
where s.value = '3';
票数 5
EN

Stack Overflow用户

发布于 2020-05-31 03:26:51

您可以使用STRING_SPLIT()作为

代码语言:javascript
复制
SELECT *
FROM Data
WHERE Region IN 
(
  SELECT Value 
  FROM STRING_SPLIT((SELECT Neighbor FROM Data WHERE Region = 3), ',')
);

查询将返回0行,因为表中没有标记为区域3的邻居的区域。

如果您将(3, 'Name3', '5,8,12'),更改为(3, 'Name3', '1,2'),,那么它将返回区域1和2,因为它们是区域3的邻居。

这是一个db<>fiddle

另一种不使用字符串拆分器的方法

代码语言:javascript
复制
SELECT *
FROM Data D
JOIN (VALUES((SELECT Neighbor FROM Data WHERE Region = 3))) T(V)
ON CONCAT(',', T.V, ',') LIKE CONCAT('%,', D.Region,',%');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62107486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档