我在 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 的确切行。
我在 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 的确切行。
据推测,您希望将“7”匹配为一个数字,但可能不是包含数字“7”的其他数字(例如,75)。
你用这个做的任何事情都会很丑陋,所以如果可能的话,你最好简单地改变桌子。我想如果你别无选择,你可以这样做:
select whatever from your_table where
your_column like '7,%' or
your_column like '%,7,% or
your_column like '%,7'
第一个涵盖当“7”是组中的第一个数字时。第二个覆盖当它位于组的中间时,第三个覆盖它是组中的最后一个。
这很难看,除非您处理非常少量的数据,否则几乎可以肯定它也会非常缓慢。我再重复一遍:改用基本设计,你真的会好很多。
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+',%'