Sql server Sql Server 2005/08问题

Sql server Sql Server 2005/08问题,sql-server,sql-server-2005,Sql Server,Sql Server 2005,我的查询为Sql Server 05和08提供了不同的搜索结果 在SQLServer2005中,搜索结果运行良好 select * from Table_name where column_name like '%summer%' and column_name like '%vacation%' --Giving 9 results select * from Table_name where column_name like '%summer-vacation%' --Gi

我的查询为Sql Server 05和08提供了不同的搜索结果

在SQLServer2005中,搜索结果运行良好

 select * from Table_name where column_name like '%summer%' and column_name like '%vacation%'  
 --Giving 9 results  
 select * from Table_name where column_name like '%summer-vacation%' 
 --Giving 9 same results
在Sql Server 2008中,搜索结果是

 select * from Table_name where column_name like '%summer%' and column_name like '%vacation%'  
 --Giving 7 results    
 select * from Table_name where column_name like '%summer-vacation%' 
 --Giving the other 2 results

在两个数据库之间的所有条件都相同的情况下,我希望第二个暑假返回的行数至少与第一个暑假返回的行数相同

但是,第二个查询并不等价

你能公布实际结果吗


另外,您的数据库是否具有相同的排序规则?

为什么您认为两个数据库实际上具有相同数量的符合条件的记录?(顺便说一句,这种搜索方式表明设计不好,因为当第一个字符是通配符时,不能使用索引。)

您的查询不同;你为什么期望他们返回相同的结果?您确定表中的数据实际上是相同的吗?即使在编辑之后,每对表中的顶部查询仍然非常清楚和明显地不同。排序规则相同吗?可能是区分大小写的不同?尝试比较返回(或未返回)结果的大小写。您是指
LIKE
参数中的空格吗?我在列名中没有看到任何空格。@Adam Robinson抱歉,我看到了列名,以为他在查询元数据(INFORMATION\u SCHEMA.TABLES)。我看到表名只是一个伪表名。是的。两个表都是相同的&表名、列名都是伪表名names@user当前位置您多次修改查询,这让我觉得您的翻译中缺少了一些内容。为什么不发布返回不同结果的实际查询?@user:请发布运行不正常的实际查询,而不是您认为代表它们的查询。我想知道,当人们看到一些与设计无关的问题的描述时,为什么会说“糟糕的设计”之类的话?您的观点是,在不同的设计中,可以更有效地执行搜索。OP并没有这样问。他们想知道的是为什么查询返回不同的结果。此外,当有人说某件事情不好时,它不会伤害海报,请提供如何改进的示例。@zespri,我们说糟糕的设计是为了让人思考他们的设计。众所周知,like语句第一个位置的通配符意味着您不能在查询中使用索引。这意味着这是一个糟糕的设计。如果他们修复了设计,那么另一个问题就无关紧要了。我并不总是有时间重新设计某人的系统,但我可以指出他们需要这样做。不加评论就让这样的事情过去是不专业的,太糟糕了。坦率地说,1)你的专业意见是,应该禁止人们发布不能使用索引的查询?2) 您有一个系统,在搜索的第一个位置不使用通配符。您(作为一名开发人员)需要运行一次性查询,纯粹是出于对底层数据的好奇,这些数据在第一个搜索位置使用通配符。此查询运行相对较快,因为表中没有太多数据。您是否会重新设计整个系统以运行一次性查询,从而不会暴露出任何问题?