如何在结果末尾硬编码空格?

How to hard code spaces at end of result?

我需要在名为 NPI (nvarchar(20)) 的列末尾添加空格。 NPI 始终是 10 位数字,但报告要求前 10 位数字是 NPI,后跟 10 个空格(我假设是文本文件格式问题)。我尝试了以下方法:

cast([NPI] as nvarchar(20)) + '          '
cast([NPI] as nvarchar(20)) + Space(10)

但是,结果集没有改变。它仅显示 10 位 NPI,不包括空格。

在演员表中添加space

cast([NPI] + '         ' as nchar(20))

你是对的@dfundako,我被我的编辑骗了。

这有效,但我使用的是 MariaDb (MySql),所以它现在可能不相关。

select concat([NPI] , '         ')

这似乎有效。添加“*”以表明存在空格..

print cast([NPI] as nchar(20)) + '*'

这里有一些其他添加填充的俗气方法...

print substring([NPI] + '                    ',1,20) + '*'

print [NPI] + space(20 - len([NPI])) + '*'

听起来您实际上是在使用 SQL 服务器而不是 MySQL。 VARCHAR() 用于可变长度字符串,它将 trim 结束空格。改为 char/nchar 以获得所需的输出。它在 SSMS 中看起来不像,因此检查数据长度以确认 nchar(20) = 20 字节 * 2 对于 unicode。

SELECT CAST([NPI] AS NCHAR(20)) AS formattedNPI, 
DATALENGTH(CAST([NPI] AS NCHAR(20))) AS confirmation
FROM your_table