首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server2008:为什么BETWEEN不能处理包含破折号(-)的字符串?

SQL Server2008:为什么BETWEEN不能处理包含破折号(-)的字符串?
EN

Stack Overflow用户
提问于 2014-12-04 02:30:30
回答 2查看 50关注 0票数 0

我的应用程序从包含column = StringA的表中提取行。用户输入了两个参数,From和Thru字符串,如果她在这两个字符串中输入了相同的字符串,并且字符串中嵌入了破折号,那么它就不起作用了。

为什么下面的代码没有返回True where ColumnA and StringA = 'medi-care',而返回true where ColumnA and StringA = 'medicare‘(无破折号)?

代码语言:javascript
复制
IF ColumnA between StringA and StringA...  

我也试过了:

代码语言:javascript
复制
IF ColumnA <= StringA and ColumnA >= StringA...

这是一个bug吗?我尝试在Thru参数字符串后附加一个'z‘--仍然不适用于带有破折号的字符串。你能建议一种方法让它工作吗?

EN

回答 2

Stack Overflow用户

发布于 2014-12-04 04:36:18

有没有可能你实际上在其中一个中有en -破折号或em -破折号,而在另一个中没有。通常情况下,很难判断。例如:

代码语言:javascript
复制
Declare @StringA varchar(20)
Declare @ColumnA VarChar(20)

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

Select 'They Match'
Where  @StringA = @ColumnA

请注意,在本例中,@ColumnA实际上使用的是短划线而不是短划线。如果你仔细观察,你也许能分辨出来,但除非你专门寻找,否则很难注意到其中的不同。

票数 1
EN

Stack Overflow用户

发布于 2014-12-04 02:39:31

这对我很管用。我在SQL 2008R2上运行了以下代码:

代码语言:javascript
复制
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‘的结果。您的数据中一定有其他因素导致了不匹配。空格或其他不可见字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27279056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档