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 如何使用 WHILE 查询从多个结果中输出一个表结果