当前位置: 首页 > 面试题库 >

为什么SqlServer select语句会选择匹配的行和匹配的行并具有尾随空格的行

朱祺
2023-03-14
问题内容

我有一个表创建与:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[TestFeature1](
[Id] [nvarchar](50) NOT NULL,
[Leng] [decimal](18, 0) NOT NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

我用这个插入数据:

insert into TestFeature1 (id,leng) values ('1',100);
insert into TestFeature1 (id,leng) values ('1 ',1000);

当我从表中选择以下内容时:

select * from TestFeature1 where id='1';

这将返回2行

1   100
1   1000

为什么会这样呢?为什么即使查询指定值仅是1,但没有空格,它也返回最后带有空格的版本?


问题答案:

有趣的是,如果您使用LIKE,则可以工作:

select * from TestFeature1 where id LIKE '1'

编辑:
经过更多的研究,我发现其他人与我们进行了相同的对话。看这里。该评论仅在讨论中进行了一半。但是结果是如我们所发现的,要么如上所述使用LIKE,要么添加第二个条件以检查列的DATALENGTH和提供的值是否相同。我更喜欢LIKE路线。



 类似资料:
  • 想要编写 Excel 公式,该公式将根据行的匹配项对值求和。要匹配的单元格可以多次出现,并且基于映射图例,它们应返回值的总和。 在黄色单元格中,我试图根据G3: G8中名称的匹配来计算B9: B21范围内的值的总和,根据映射图例到Item1,然后是Item2和Item 3。此外,我想考虑在日期1、日期2和日期3之间进行的总和。下面的SumProduct公式仅适用于单个日期的sum数组,而不适用于日

  • 问题内容: 这是桌子:- 而下面是一个 虚构的 sql 预期的结果是:- (一种) (B) (C) 最喜欢’A’的情况! 我知道这种情况与组合有关。 在现实世界中-客户从商店获得商品,并且由于他与商店之间达成协议,他每个星期五都付款。例如,付款金额不是项目的确切总和:他得到5册50钪(= 250钪)的书,而星期五他带来了150册。所以前3本书非常匹配-3 * 50 = 150.我需要找到那三本书的

  • 问题内容: 这源于对正则表达式语法形式化的讨论。我已经通过几个正则表达式解析器看到了此行为,因此我将其标记为与语言无关。 采取以下表达式(针对您喜欢的语言进行调整): 它将返回一个空字符串。为什么? 更奇怪的是,表达式将返回string 。为什么双空比赛? 免责声明: 我知道回溯和贪婪的匹配,但是杰弗里·弗里德尔制定的规则似乎规定,匹配所有内容,并且不再进行进一步的回溯或匹配。那为什么是空的? 注

  • 我有一个表格结构 如何使用条件?我尝试使用这个,但结果是

  • 问题内容: 这是一张桌子… 我需要返回总数量等于或超过当前库存水平的最新行,一旦达到总数,就不包括任何其他行,因此我希望只看到这些行… 我假设我需要CTE(公用表表达式),并且已经看过这个问题,但是看不到如何将其转换为我的要求。 帮助!? 问题答案: 退货

  • 问题内容: 我已经习惯了MSSQL,而不是Mysql,所以对这个可能很愚蠢的问题感到抱歉。我正在尝试通过运行以下查询来更新备份数据库的密码: 当我运行它时,它说 查询正常,受影响的0行(0.01秒)匹配的行:1已更改:0警告:0 为什么行匹配但没有变化? 问题答案: 这意味着该值未更改。由于该列已等于的md5哈希值,因此可能未更改。