请帮我解决这个挑战.
此代码返回一个空白结果,我无法弄清楚原因.

select Vendor_Name + ' || ' + cast(cnt as varchar(12)) as Vendor_Count
from (select top (1) Vendor_Name, count(Vendor_Name) as cnt
from dbo.Vendors nolock
group by Vendor_Name
having count(Vendor_Name)>1
order by 2 desc) x
Run Code Online (Sandbox Code Playgroud)
但是......内部查询返回Vendor_Name空白和cnt 63420

select top (1)
Vendor_Name, count(Vendor_Name) as cnt
from
dbo.Vendors nolock
group by
Vendor_Name
having
count(Vendor_Name) > 1
order by
2 desc
Run Code Online (Sandbox Code Playgroud)
这是没有top(1)的内部查询的结果.如您所见,blank/empty/null Vendor_Name最常出现.
我使用len()函数检查Vendor_name的长度,它返回12.但是当我将上面的内部查询的结果复制到Excel工作表,并在Excel中使用len()函数时 - excel显示0.声明的长度因为Vendor_name在SQL Server表中是nvarchar(50).
我尝试了isnull(Vendor_Name,''),COALESCE(Vendor_Name,'')但这没有什么区别.
我重新安排了查询并获得了非空白结果,这很有意思,但是我的原始查询没有.
select ' || ' + cast(cnt as varchar(12)) + ' ' + Vendor_Name
from (select top (1) Vendor_Name, count(Vendor_Name) as cnt
from dbo.Vendors nolock
group by Vendor_Name
having count(Vendor_Name)>1
order by 2 desc) x
Run Code Online (Sandbox Code Playgroud)
但这个结果不是我想要的.
我错过了什么?
谢谢!
PS.我试图复制数据到这里发布但没有成功.
这是一个真正的难题!
我怀疑Vendor_Name可能以指示字符串结尾的NUL('\0')字符开头.这将使它似乎没有内容并解释连接顺序的差异.
要测试这一点,请尝试REPLACE(Vendor_Name, CHAR(0), ' ')外部查询
| 归档时间: |
|
| 查看次数: |
576 次 |
| 最近记录: |