在单个 SQL 语句中使用 LIKE 和 IN 以及子查询

2024-04-14

我正在编写一个查询,尝试在子查询/CTE 中搜索通配符子字符串,并将此逻辑嵌套在我的 CASE 语句中。例如:

SELECT
CASE 
WHEN '%' + text + '%' IN (SELECT Column1 FROM Table) THEN 'I am in Column1'
ELSE text END
FROM Table

不幸的是,似乎没有办法做到这一点。由于我需要使用 LIKE 运算符,并且无法同时使用 LIKE 和 IN。我必须单独编写每个 LIKE 语句,这将适用于 1000 多行。有人推荐一个更直接的解决方案吗?预先感谢!

-- 编辑:抱歉,根据评论进行了一些澄清。一个更好的例子:

UserID     |  UserPeers   |  Gender
--------------------------------------------
Mike       |  Tom1, Bob1  |  M
John       |  Tom1, Greg1 |  M
Sally      |Mike1, John1  |  F
Sara       | Sally1, Bob1 |  F

在上表中,我需要搜索 UserPeers 列中的子字符串,看看它们是否存在于 UserID 列中的任何位置。在这种情况下,成功返回的行将是 Sally 和 Sara 下的行,因为 UserID 下存在“Mike”和“Sally”。

SELECT *
FROM Users
WHERE '%' + UserPeers + '%' LIKE (SELECT UserID FROM Users)

这里返回的错误是: 子查询返回超过 1 个值。当子查询跟在 =、!=、、>= 后面或子查询用作表达式时,这是不允许的。


SELECT UserID, CASE WHEN EXISTS 
(
  SELECT 1 FROM dbo.Users WHERE UserPeers LIKE '%' + u.UserID + '%'
) THEN 'I am in Column1' ELSE UserID END
FROM dbo.Users AS u;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在单个 SQL 语句中使用 LIKE 和 IN 以及子查询 的相关文章

  • 如何通过逗号分隔将 2 行合并为一行?

    我需要将这些单独的行合并到一列 我现在如何通过逗号分隔合并列 CID Flag Value 1 F 10 1 N 20 2 F 12 2 N 23 2 F 14 3 N 21 3 N
  • 从Oracle表中删除重复行

    我正在 Oracle 中测试某些内容并使用一些示例数据填充表 但在此过程中我不小心加载了重复记录 因此现在我无法使用某些列创建主键 如何删除所有重复行并只保留其中一行 Use the rowid伪列 DELETE FROM your tab
  • 单向关系和双向关系的区别

    我想知道这两个词是什么意思 我遇到他们是在教义的文档 http www doctrine project org documentation manual 2 0 en association mapping 但我不明白他们的意思 这与常见
  • 产品和变体 - 设计数据库的最佳方法

    描述 商店可以有产品 鞋子 T 恤等 每个产品可以有许多变体 每个变体可以有不同的价格和库存 例如T 恤有不同的颜色和尺寸 颜色 蓝色 尺寸 L 价格 10 美元 库存 5 颜色 蓝色 尺寸 XL 价格 10 美元 库存 10 颜色 白色
  • Sql Server 字符串到日期的转换

    我想像这样转换一个字符串 10 15 2008 10 06 32 PM 转换为 Sql Server 中的等效 DATETIME 值 在 Oracle 中 我会这样说 TO DATE 10 15 2008 10 06 32 PM MM DD
  • 如何使用 SQL Server 查询对“版本号”列进行排序

    我想知道我们当中的 SQL 天才是否可以向我伸出援助之手 我有一个专栏VersionNo在表中Versions包含 版本号 值 例如 VersionNo 1 2 3 1 1 10 3 1 1 4 7 2 etc 我正在寻找对此进行排序 但不
  • 安全转义表名/列名

    我在 php 中使用 PDO 因此无法使用准备好的语句转义表名或列名 以下是我自己实现它的万无一失的方法 tn str replace REQUEST tn column str replace REQUEST column sql SEL
  • 如何将 LEFT JOIN 限制为 SQL Server 中的第一个结果?

    我有一些 SQL 几乎可以做我想做的事情 我正在使用三个表 Users UserPhoneNumbers 和 UserPhoneNumberTypes 我正在尝试获取用户列表及其电话号码以供导出 数据库本身很旧并且存在一些完整性问题 我的问
  • 列的 SQL MAX(包括其主键)

    Short 从下面的 sql select 中 我获取了 cart id 和该购物车中最高价值商品的值 SELECT CartItems cart id MAX ItemValues value FROM CartItems INNER J
  • 多个数据库连接

    我有三张桌子 categories content info and content The categories表包含类别的id及其 IDparent类别 The content info包含两列 entry id帖子的 ID 和cat
  • 如何将存储过程中的值返回到 EF

    我试图通过 EF 调用存储过程并从存储过程中检索返回值 我用过this https stackoverflow com questions 6861737 executesqlcommand with output parameter an
  • 光标返回错误值 - sqlite - Android

    我正在开发一个短信应用程序 我正在尝试从每次对话中获取最后一条短信 这是我的 SQL 语句 SELECT MAX smsTIMESTAMP AS smsTIMESTAMP id smsID smsCONID smsMSG smsNUM sm
  • 如何将特定行保留为查询(T-SQL)的第一个结果?

    我正在编写一个 SQL 查询来获取 Report Builder 3 0 中报表的参数列表 我需要在结果中添加一个带有值 All 的额外行 如下所示 SELECT All UNION SELECT DISTINCT Manager FROM
  • count 和 groupby 在一个查询中一起使用

    以下查询正在获取页面上的一些产品信息 这很好 但我也想以文本形式显示它出现的产品编号 但是 我使用了groupby但我也想用count on pro id SELECT FROM cart WHERE session id SESSION
  • MySQL - 替换列中的字符

    作为一个自学成才的新手 我给自己制造了一个大问题 在将数据插入数据库之前 我将字符串中的撇号 转换为双引号 而不是 MySQL 实际需要的反斜杠和撇号 在我的表增长到超过 200 000 行之前 我认为最好立即纠正此问题 所以我做了一些研究
  • PDO::PARAM_FLOAT 不存在,为什么?

    我想知道为什么 PDO PARAM FLOAT 不存在以及什么可以替代它 没有 可能是由于隐含的舍入问题 只需使用PDO PARAM STR并使用将浮点数转换为字符串strval float or string float
  • ORDER BY id 或 date_created 显示最新结果?

    我有一个表 实际上有几个 我想首先从中获取最新条目的结果 这是我的ORDER BY条款选项 date created INT 从不改变值 id 当然是INT AUTO INCRMENT 两列应同等地代表记录插入的顺序 我自然会使用date
  • 如何对主索引重新编号

    我有一个简单的 MySQL 表 主索引 id 不是一一编号的 1 31 35 100 等 我希望它们的编号如 1 2 3 4 请告诉我该怎么做 我还想指出的是 我知道该操作可能产生的后果 但我只是想整理一下表格 我同意其他方法也可以 但我只
  • 如何使组合键唯一?

    I am making a database of students in one school Here is what I have so far 如果您不喜欢阅读 请跳至 简而言之 部分 问题是我对这个设计并不满意 我想要的组合gra
  • 扁平化/反规范化 SQL 查找表的最佳方法?

    我有很多这样的表 Lookup HealthCheckupRisks ID Name 1 Anemia 2 Anorexic 3 Bulemic 4 Depression 122 Syphilis PatientRisksOnCheckup

随机推荐

  • 在 BST 中查找中序后继而不使用任何额外空间

    我正在寻找一种方法来找出 BST 中节点的中序后继者 而不使用额外的空间 获取给定节点的中序后继节点N我们使用以下规则 If N有一个合适的孩子R那么inorderSuccessor N 是最左边的 的后继者R Else inorderSu
  • Solidity v0.6.0。后备功能。需要它们做什么?

    阅读 Solidity v0 6 0 的文档后docs https docs soliditylang org en latest 060 breaking changes html semantic and syntactic chang
  • 删除指向不存在目录的符号链接的安全方法(对于 python 二进制文件)

    我不小心输入了 sudo ln sf usr local bin python2 5 usr bin python 代替 sudo ln sf usr local bin python2 5 usr bin python 现在 每当我运行
  • 获取批处理文件中两个目录的路径

    我想获取从当前位置向上 2 个目录的文件夹的路径 我正在做以下事情 echo CD set NEW PATH bin echo PATH 当我运行上面的代码时 我打印了当前目录路径 但 NEW PATH 不是 它只是说 ECHO OFF 从
  • 在 ThreadPoolExecutor 中实现优先级队列

    已经为此苦苦挣扎了 2 天多了 实施了我在这里看到的答案Java中指定任务顺序执行 https stackoverflow com questions 12722396 specify task order execution in jav
  • 在 C# 中从不同类引发一个类的事件

    我有一个类 EventContainer cs 其中包含一个事件 例如 public event EventHandler AfterSearch 我还有另一个类 EventRaiser cs 我如何从此类中引发 而不是处理 上述事件 引发
  • SQL Server 2008 行插入和更新时间戳

    我需要向 SQL Server 2008 R2 中的数据库表添加两列 创建TS 插入行的日期和时间 更新TS 更新行的日期和时间 我有几个问题 我应该为其中的每一个使用什么列数据类型 createTS只需在插入行时设置一次 当我尝试date
  • 如何获取Core Data数据库的最后一条记录?

    我有一个名为 images 的核心数据实体 它只有 2 个字段 imageName NSString timeStamp NSNumber 我正在尝试模拟一种堆栈 LIFO 后进先出 插入新条目很容易 但是读取添加到实体的最后一个条目怎 么
  • 如何将Python屏幕输出保存到文本文件

    我想从字典中查询项目并将打印输出保存到文本文件中 这是我所拥有的 import json import exec fullog as e inp e getdata inp now is a dict which has items key
  • Blueimp文件上传,如何知道进度回调是针对哪个文件的?

    你如何知道进度回调是针对哪个文件的 即使我将equentialUploads设置为true 但仅在IE10中 而不是Chrome FireFox Safari 当我选择同时上传多个文件时 add回调中的data files数组包含多个文件
  • 删除外键约束

    如果我在创建过程中没有命名外键 如何删除它 create table abc id number 10 foreign key id references tab roll even alter table abc drop foreign
  • [__NSCFTimer copyWithZone:]:无法识别的选择器发送到实例

    var searchDelayer NSTimer func searchBar searchBar UISearchBar textDidChange searchText String searchDelayer invalidate
  • 如何组合多个可为空的 NSPredicate?

    例如 类似的东西 var finalPredicate NSPredicate format if screen nil screenPredicate NSPredicate format screen screen finalPredi
  • 使用jquery mobile点击而不是点击

    我正在制作一个需要在移动设备和非移动设备上运行的网络应用程序 在我的应用程序中 我有几个图标 用户可以单击这些图标 以便使用 Websocket 向服务器发送消息 我的代码看起来像这样 button container on tap sen
  • 像素转MM方程?

    有没有可靠的公式可以计算出 MM 的像素大小 或者说这不可能跨设备 我们正在使用一个定制系统 该系统可以向许多具有不同屏幕尺寸的设备提供内容 它可以检测 MM 中的屏幕宽度 但我们希望将其准确地转换为像素大小 以便使用简单的 jquery
  • 在 Rstudio 上浏览 R 代码的高效递归方式?

    我正在使用 RStudio 我开始觉得有必要通过包代码来更深入地理解或破解某些功能 当我尝试使用导航时使用 Ctrl 单击鼠标 http www rstudio com ide docs using navigation对于包内定义的函数
  • 为什么使用散列来为大量文件创建路径名?

    我注意到在许多情况下 应用程序或数据库使用 has 来存储文件 blob 集合来确定路径和文件名 我相信预期的结果是路径永远不会太深 或者文件夹太满 文件夹中的文件 或文件夹 太多 导致访问速度变慢 编辑 示例通常是数字图书馆或存储库 尽管
  • 这是一个有效的 java 包名称吗? [复制]

    这个问题在这里已经有答案了 可能的重复 您在 Java 中的个人 爱好项目中使用什么包命名约定 https stackoverflow com questions 292169 what package naming convention
  • 如何在react-bootstrap中将导航栏居中

    我希望这是一个简单的问题 我看到有些人问了关于引导程序的类似问题 我无法将这些答案之一转化为适合我的解决方案 而且我认为无论如何可能有一个更简单的反应引导答案 代码示例在这里 https codesandbox io s yq5jvl9lz
  • 在单个 SQL 语句中使用 LIKE 和 IN 以及子查询

    我正在编写一个查询 尝试在子查询 CTE 中搜索通配符子字符串 并将此逻辑嵌套在我的 CASE 语句中 例如 SELECT CASE WHEN text IN SELECT Column1 FROM Table THEN I am in C