sql - SQL Server 用逗号分隔列中的字符串,并在不使用拆分方法的情况下搜索值,并且检查应该是 AND 而不是 OR
问题描述
我在一列中有逗号分隔的字符串值。 示例"WX,AB,XYZ", "WX,CD,NY" 现在在 sql 中如果我收到 "WX,XYZ" 它应该返回 "WX,AB,XYZ" 而不是 "WX,CD,NY"。基本上是逗号分隔值之间的 AND 比较。PS:由于性能问题,我不能使用拆分方法。
解决方案
逗号分隔的字符串是一个非常糟糕的主意。你应该重新审视你的设计。但是,如果您被其他人非常非常糟糕的设计决定所困扰,那么您可以使用string_split()
(至少在 SQL Server 的更新版本中):
select t.*
from t
where (select count(*)
from split_string(t.col, ',') s1 join
split_string(@input, ',') s2
on s1.value = s2.value
) = (select count(*) from split_string(@input, ','));
此公式假定所有字符串都没有重复值。
推荐阅读
- css - 如何首先在桌面上更改默认的移动优先方法(Tailwind)?
- node.js - AWS Api Gateway 未在 204 上设置 CORS
- git - git submodule 有未提交的更改,但在模块内部没有任何更改
- php - php中for循环的多个数据库连接
- java - PCM 音频到文件
- here-api - Here.com API 返回错误的国家代码 NCY
- java - 在 Eclipse 中运行应用程序时设置 ClassPath 命令行参数
- reactjs - 如何从 React js 中的 s3 存储桶中获取 5 个最新文件?
- php - 如何使用 Laravel Socialite 登录用户(LinkedIn)
- java - 如何使用 JavaEE eclipse 将我的 React Native 应用程序连接到 MySQL 数据库?