2011-04-18 130 views
-1

我的查詢爲Sql Server 05和08提供了不同的搜索結果Sql Server 2005/08問題

在Sql Server 2005中,搜索結果工作正常。

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 
+4

你的查詢是不同的;你爲什麼期望他們返回相同的結果?你確定表中的數據實際上是相同的嗎? – 2011-04-18 15:14:19

+1

即使在編輯之後,每對中的頂部查詢仍然非常清晰明顯不同。 – 2011-04-18 15:18:31

+1

整理是否一樣?區分大小寫可能有區別嗎?嘗試比較返回結果的外殼(或不返回)。 – rrrr 2011-04-18 15:32:11

回答

0

所有的事情都是兩個數據庫之間的平等,我期望的第二個夏天/假期作爲第一個返回至少儘可能多的行夏天/假期。

但是,第二個查詢不等效。

你能發佈實際結果嗎?

另外,您的數據庫是否具有相同的排序規則?

+0

你是不是指'LIKE'參數中的空格?列名中沒有看到任何空格。 – 2011-04-18 15:21:05

+0

@Adam Robinson對不起,我看到了column_name,並認爲他在查詢元數據(INFORMATION_SCHEMA.TABLES)。我看到Table_name只是一個虛擬表名。 – 2011-04-18 15:24:00

+0

是的..兩個表都是一樣的,table_name,column_name是虛擬名稱 – Krishna 2011-04-18 15:26:08

0

爲什麼你認爲兩個數據庫實際上都有相同數量的符合條件的記錄? (順便說一句,這種方式是一種糟糕的設計,因爲當你有一個通配符作爲第一個字符時,你不能使用索引。)

+0

我想知道爲什麼人們在看到某個與設計無關的問題的描述時,會說「糟糕的設計」?你的觀點是,在不同的設計中,搜索可以更有效地執行。 OP不要求這一點。他們想知道的是爲什麼他們的查詢返回不同的結果。此外,當某人說某事不好時,它從不會傷害海報,並提供如何改進它的例子。 – 2011-04-18 23:18:38

+0

@ zespri,我們說糟糕的設計讓人想到他們的設計。這是一個衆所周知的事實,通配符在聲明的第一個位置意味着你不能在查詢中使用索引。這意味着這是一個糟糕的設計。如果他們修復設計,另一個問題是無關緊要的。我並不總是有時間重新設計某人的系統,但我可以指出他們需要。讓這樣的事情沒有評論就會變得不專業,這很糟糕。 – HLGEM 2011-04-20 14:24:18

+0

爲了得到這個結論,1)這是你的專業意見,應該禁止人們發出不能使用索引的查詢? 2)你有一個系統,在第一個位置不使用通配符進行搜索。您(作爲開發人員)需要運行一次性查詢,純粹是出於對在第一個位置使用通配符進行搜索的基礎數據的好奇心。此查詢運行速度相對較快,因爲表中沒有大量數據。您是否會重新設計整個系統以運行一次性查詢,而本身沒有任何問題? – 2011-04-20 20:13:09