2014-12-03 66 views
0

我的應用程序從包含column = StringA的表中抽取行。用戶輸入2個參數,From和Thru字符串,如果她在兩個字符串中輸入相同的字符串,並且該字符串具有嵌入式短劃線,則該字符串不起作用。SQL Server 2008:爲什麼BETWEEN不處理包含短劃線( - )的字符串?

爲什麼不會返回True在ColumnA和StringA ='medi-care'的情況下,但是在ColumnA和StringA ='medicare'(沒有短劃線)的情況下返回true?

IF ColumnA between StringA and StringA... 

我也試過:

IF ColumnA <= StringA and ColumnA >= StringA... 

這是一個錯誤?我嘗試在Thru參數字符串中追加一個'z' - 仍然不適用於嵌入破折號的字符串。你能提出一種方法來完成這項工作嗎?

+0

根本不清楚。發佈示例數據。如果StringA ='醫療保險'返回true,那麼StringA ='醫療保險'。 – Paparazzi 2014-12-03 19:06:24

回答

0

它適用於我。我跑在SQL 2008R2上:

DECLARE @Test TABLE (
    ColA varchar(7) 
); 

INSERT INTO @Test (ColA) VALUES ('a-z'); 

SELECT * FROM @Test WHERE ColA BETWEEN 'a-z' AND 'a-z'; 

而且我得到'a-z'的結果。您的數據中必須有其他內容導致不匹配。空格或其他不可見字符。

1

是否有可能在你的其中一箇中有一個短劃線或短劃線而不是另一個。很多時候很難說。例如:

Declare @StringA varchar(20) 
Declare @ColumnA VarChar(20) 

Select @StringA = 'medi-care', 
     @ColumnA = 'medi—care' 

Select 'They Match' 
Where @StringA = @ColumnA 

請注意,在此示例中,@ColumnA實際上具有連字符而不是短劃線。如果仔細觀察,您可能會發現,但除非您專門尋找它,否則很難發現其中的差異。