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

时间:2018-03-16 14:34:32

标签: sql sql-server tsql spaces hardcode

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

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

但是,结果集不会更改。它只显示10位数的NPI,并且不包含空格。

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

在演员阵容中添加空格

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

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

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

select concat([NPI] , '         ')

答案 2 :(得分:0)

这似乎有效。添加'*'表示存在空格..

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

以下是其他几种添加填充的简洁方法......

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

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