我的应用程序从包含column = StringA的表中提取行。用户输入了两个参数,From和Thru字符串,如果她在这两个字符串中输入了相同的字符串,并且字符串中嵌入了破折号,那么它就不起作用了。
为什么下面的代码没有返回True where ColumnA and StringA = 'medi-care',而返回true where ColumnA and StringA = 'medicare‘(无破折号)?
IF ColumnA between StringA and StringA... 我也试过了:
IF ColumnA <= StringA and ColumnA >= StringA...这是一个bug吗?我尝试在Thru参数字符串后附加一个'z‘--仍然不适用于带有破折号的字符串。你能建议一种方法让它工作吗?
发布于 2014-12-04 04:36:18
有没有可能你实际上在其中一个中有en -破折号或em -破折号,而在另一个中没有。通常情况下,很难判断。例如:
Declare @StringA varchar(20)
Declare @ColumnA VarChar(20)
Select @StringA = 'medi-care',
@ColumnA = 'medi—care'
Select 'They Match'
Where @StringA = @ColumnA请注意,在本例中,@ColumnA实际上使用的是短划线而不是短划线。如果你仔细观察,你也许能分辨出来,但除非你专门寻找,否则很难注意到其中的不同。
发布于 2014-12-04 02:39:31
这对我很管用。我在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‘的结果。您的数据中一定有其他因素导致了不匹配。空格或其他不可见字符。
https://stackoverflow.com/questions/27279056
复制相似问题