我有一张桌子有一varchar列categoryIds。它包含一些用逗号分隔的ID,例如:
varchar
categoryIds
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