Sql server 2005 在SQLServer2005中选择查询
在SQLServer2005中,我在4行1列中有以下值Sql server 2005 在SQLServer2005中选择查询,sql-server-2005,Sql Server 2005,在SQLServer2005中,我在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
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”是组中的第一个数字时,第一个覆盖。第二个覆盖在组的中间,第三个覆盖是组中的最后一个。
这很难看,除非你处理的数据量非常小,否则它几乎肯定也会非常慢。我再重复一遍:你真的可以更好地修复基本设计。你可能希望将“7”匹配为一个数字,但可能不希望其他包含数字“7”(例如75)的数字匹配
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+',%'
你用这个做的任何事情都会非常难看,所以如果可能的话,你最好干脆换张桌子。我想如果你别无选择,你可以这样做:
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+',%'
在一列中以逗号分隔的值列表是一个可怕的坏主意。。。。别这样!您违反了关系数据库设计的第一个正常形式,这使得像您这样的搜索变得困难和棘手……在单个列中使用逗号分隔的值列表是一个非常糟糕的主意。。。。别这样!您违反了关系数据库设计的第一个正常形式,这使得像您这样的搜索变得困难和棘手…我发布了一个类似的答案。。。我想这里我们遗漏了一行独立的'7'@chac:是的,如果有可能一个正确的字段只有一个值,那么我们希望添加
或您的_列='7'
。我发布了一个类似的答案。。。我想这里我们遗漏了一行独立的'7'@chac:是的,如果有可能一个正确的字段只有一个值,那么我们希望添加或您的_列='7'
。