Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 在SQLServer2005中选择查询_Sql Server 2005 - Fatal编程技术网

Sql server 2005 在SQLServer2005中选择查询

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

在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 
     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'