2011-07-08 41 views
2

我有一個查詢,我想應該是這樣的:WHERE子句需要像當equals需要工作

select * 
from Requesters 
where CITIZEN_STATUS = 'OS-IE '; 

領域CITIZEN_STATUS,其數據類型爲varchar(15),對這個特殊的尾部空間值。我將它粘貼到Notepad ++中,並用十六進制編輯器查看它,最後的空間確實是0x20。

對於查詢工作,我必須把它寫這樣的:

select * 
from Requesters 
where CITIZEN_STATUS like 'OS-IE%'; 

所以,很顯然,我有一個解決辦法,問題並不迫切。但我真的很想知道爲什麼第一個查詢不能做到我期望的。有沒有人有任何想法?

我應該提到我正在使用SQL Server 2005,如果需要可以提供有關配置的更多信息。

+0

您是否想知道如何保留比較的尾部空間?或者如何抑制它?目前還不清楚。什麼數據類型是CITIZEN_STATUS? – gbn

+0

這更多的是一個理論問題。我想知道爲什麼我不能使用等號並放入字段中的內容,而不必使用帶有通配符的LIKE。謝謝! – user434462

回答

0

在MySQL 5中,此查詢有效。但是,它不區分尾隨的空白。查詢匹配'OS-IE'以及'OS-IE'。在SQL Server 2005中,您可以使用定義一行的結尾的正則表達式。正確的字符是美元符號'$',表示您確實需要空間。請參閱http://msdn.microsoft.com/en-us/magazine/cc163473.aspx