SQL Server选择查询多个结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server选择查询多个结果相关的知识,希望对你有一定的参考价值。

我正在使用SQL Server 2012(SP3-CU2)(KB3137746)

我有一个表POLICY并尝试选择与policyNumber匹配的行。此列的类型为VARCHAR

第一种情况:

select * 
from POLICY 
where PolicyNumber = 1234

它返回两行

PolicyNumber  CustomerId
------------------------
001234        000789
1234          000567

接下来,我试图在表格中找到这些案例 - 有多少这样的案例?

第二种情况:

Select Count(1) As Number_Of_policy, PolicyNumber     
From POLICY 
Group By PolicyNumber    
Having Count(1) > 1

它没有返回预期的行。

然后我修改了查询

第三种情况:

Select Count(1) As Number_Of_policy, CAST(PolicyNumber AS int) policyNum   
From POLICY
Group By CAST(PolicyNumber AS int)    
Having Count(1) > 1

它正在返回行。

我的问题是为什么在写正常选择查询时这种行为?它是默认类型情况和第一种情况下返回的行吗?

答案

文本001234与文本1234不同。但是如果你把它们都转换成整数,那么它们就变成了相同的数字1234

这里的故事的寓意是,如果您打算将策略数字表示为那样,即数字,则将它们存储在数字列中。

如果您想知道为什么第一个查询返回两行:

SELECT * from POLICY WHERE PolicyNumber = 1234;

在这种情况下,SQL Server正在对PolicyNumber进行隐式转换为整数。

以上是关于SQL Server选择查询多个结果的主要内容,如果未能解决你的问题,请参考以下文章

sql server怎么把多个查询结果关联起来

SQL Server 如何使用 WHILE 查询从多个结果中输出一个表结果

SQL server management studio的基本使用

如何在子查询 SQL Server 中选择多个项目

sql server怎么导出查询结果为脚本

SQL Server中具有不同列数的多个查询的联合结果