当前位置: 首页 > 面试题库 >

如何检查存储在varchar列中的逗号分隔列表中是否包含数字?

史超英
2023-03-14
问题内容

我有一张桌子有一varcharcategoryIds。它包含一些用逗号分隔的ID,例如:

id       categoryIds
-------------------- 
1        3,7,12,33,43

我想执行一条select语句,并检查该列中是否存在int。像这样的东西:

select * 
from myTable 
where 3 in (categoryIds)

我知道这是可能在MySQL做这个,但它可以在SQL Server来完成呢?

我尝试将int转换为char,该char运行以下语句:

select * 
from myTable 
where '3' in (categoryIds)

但这似乎不支持以逗号分隔的列表,因为它什么也不返回。


问题答案:

您实际上应该重新设计该表,以将这些值从逗号分隔成单独的行中分离出来。但是,如果这不可能,那么您将不得不进行字符串比较:

DECLARE @id INT = 3
DECLARE @stringId VARCHAR(50) = CAST(@id AS VARCHAR(50))

SELECT * 
FROM MyTable 
WHERE categoryIds = @stringId -- When there is only 1 id in the table
OR categoryIds LIKE @stringId + ',%' -- When the id is the first one
OR categoryIds LIKE '%,' + @stringId + ',%' -- When the id is in the middle
OR categoryIds LIKE '%,' + @stringId -- When the id is at the end


 类似资料:
  • 问题内容: 我有一张这样的桌子: 我想测试3和15是否在称为NUMBERS的Blob中。并可以看到无法使用LIKE %% 仅选择ID为2且具有三个scoulb的行… 问题答案: 这个也可以: 使用IN将查找以逗号分隔的字符串,例如。这两个 在此页面上找到的信息:

  • 所以我想看看一个字符串是否存在于多个用逗号分隔的串联列上: 例如,我的表有列、、如下所示: 因此逗号分隔的串联字符串如下所示: 注意每个逗号后面的空格 使用LINQ方法语法,以便能够输入像“st,farm”这样的字符串并获得第一行 很明显,它似乎无法将转换为原始SQL,但我不确定将其更改为什么。

  • 问题内容: 我有两个列表,一个包含 相册,文件对的 列表,另一个仅包含有关一张照片的信息- 相册 (位置0)和 文件 (位置1) 如何查看 照片 列表是否在 照片 列表中?就像字符串一样。 相册 , 文件的 位置无关紧要,因为不会有任何 文件 等于 相册 。 问题答案: 同样喜欢字符串。不仅如此,也是 如此 。也适用于列表中的列表: 对列表的成员资格测试仅迭代列表,并对每个元素使用相等性测试以查看

  • 这个问题是由打字错误或无法再复制的问题引起的。虽然这里可能有类似的问题,但这一问题的解决方式不太可能帮助未来的读者。 总结: 对于我的商务课程,我们必须开发产品和/或服务。我正试图为其他团队开发一个解决方案,帮助他们管理库存。我已经有一个用Python开发的程序了,但是,C使开发GUI变得更容易(谢谢你,Visual Studio)。我在列表方面有困难。 以前检查过的资源: 在C中创建列表列表#

  • 问题内容: 我有看起来像这样的数据: 对于每个customer_id,我需要用逗号分隔的列表,以指示该客户运营的月份: 等等。如何使用SQL Server 2005 SQL(而不是T-SQL)轻松生成此逗号分隔的列表? 我在Stack Overflow和其他地方在这里看到的大多数解决方案似乎都是基于联接多个行值而不是列值来创建逗号分隔的列表: T-SQL FOR XML路径(’‘) 关联的子查询与

  • 问题内容: 假设我们有一个简单的选择查询,返回的结果如下所示 因此,如果我们用逗号分隔名字,那么我想要这样的结果 问题答案: 您可以将查询编写为: