gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:57:03 33 4
gpt4 key购买 nike

我有一个带有 varcharcategoryIds 的表。它包含一些用逗号分隔的ID,例如:

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

我想做一个 select 语句并检查该列中是否存在 int。像这样的事情:

select * 
from myTable
where 3 in (categoryIds)

我知道这在 MySQL 中可以通过执行 this 来实现。 ,但是在 SQL Server 中也可以完成吗?

我尝试将 int 转换为 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

关于sql - 如何检查 varchar 列中存储的逗号分隔列表中是否包含数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33278789/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com