0

我在 SQL Server 2005 中的 4 行和 1 列中有以下值。

7,75,8,95,55
8,75,8,95,66 
6,75,86,7,55 
74,75,84,95,55

如果我在 SQL 查询中传递值 7,我需要获取值为 7 的确切行。

4

2 回答 2

2

据推测,您希望将“7”匹配为一个数字,但可能不是包含数字“7”的其他数字(例如,75)。

你用这个做的任何事情都会很丑陋,所以如果可能的话,你最好简单地改变桌子。我想如果你别无选择,你可以这样做:

select whatever from your_table where 
     your_column like '7,%' or 
     your_column like '%,7,% or 
     your_column like '%,7'

第一个涵盖当“7”是组中的第一个数字时。第二个覆盖当它位于组的中间时,第三个覆盖它是组中的最后一个。

这很难看,除非您处理非常少量的数据,否则几乎可以肯定它也会非常缓慢。我再重复一遍:改用基本设计,你真的会好很多。

于 2012-04-30T06:55:24.347 回答
2
declare @T table
(
  Col varchar(20)
)

insert into @T values
('7,75,8,95,55'),
('8,75,8,95,66'), 
('6,75,86,7,55'), 
('74,75,84,95,55')

declare @Val varchar(10)
set @Val = '7'

select Col
from @T
where ','+Col+',' like '%,'+@Val+',%'

SE-数据

于 2012-04-30T06:55:45.597 回答