【发布时间】:2022-04-19 19:31:58
【问题描述】:
我有一个带有varchar 列categoryIds 的表。它包含一些用逗号分隔的 ID,例如:
id categoryIds
--------------------
1 3,7,12,33,43
我想做一个 select 语句并检查该列中是否存在 int。像这样的:
select *
from myTable
where 3 in (categoryIds)
我知道通过this 在 MySQL 中可以做到这一点,但在 SQL Server 中也可以做到吗?
我尝试将 int 转换为 char,它运行以下语句:
select *
from myTable
where '3' in (categoryIds)
但它似乎没有任何“开箱即用”对逗号分隔列表的支持,因为它不返回任何内容。
【问题讨论】:
-
您应该考虑一下您的数据库设计。以 csv 格式存储值不是一个好习惯。
-
不要将数据存储为解决方案中的逗号分隔值。每行一个值是 SQL 方式!
-
可能是这样的:
SELECT * FROM myTable WHERE ',' + categoryId + ',' LIKE '%,3,%'; -
感谢您的意见,我们最终改用“SQL 方式” :)
-
对您的表格进行标准化非常好!存储 csv 列表会使 一切 变得更加困难......正如这个问题所证明的那样。
标签: sql sql-server