TSQL/MSSQL Select - 零填充整数

发布于 2024-11-27 01:23:57 字数 400 浏览 2 评论 0原文

我有一个 SQL select 语句:

select pk from items

它返回:

1
2
4
29
8
987654
12313232

现在我的老板想要这样的东西:

000001
000002
000004
000029
000008
987654
12313232

他肯定希望输出最少为六位数字(我认为这是无稽之谈)。

我尝试过执行类似 '00000' + Convert(nvarchar(6),pk) 的操作,仅当 pk 仅为一位数字时才可以正常工作。您知道如何做到这一点吗?我应该使用条件语句吗?

I have an SQL select statement:

select pk from items

it returns:

1
2
4
29
8
987654
12313232

Now my boss wants something like:

000001
000002
000004
000029
000008
987654
12313232

He definitely want the output to be six digits minimum (which I think nonsense).

I've tried doing something like '00000' + convert(nvarchar(6),pk) which works okay only if the pk is just one digit. Do you have any idea how to do this? Should I use conditional statement?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

下雨或天晴 2024-12-04 01:23:57

通常是这个

RIGHT ('000000' + CONVERT(varchar(6), pk), 6)

,但是当你的值超过6位时,试试这个

LTRIM(RIGHT ('    000000' + CONVERT(varchar(10), pk), 10))


但是你需要一个 CASE 来处理 7-9 位长的数字:。

CASE
    WHEN pk >= 1000000 THEN CONVERT(varchar(10), pk)
    ELSE RIGHT ('000000' + CONVERT(varchar(6), pk), 6)
END

Normally this

RIGHT ('000000' + CONVERT(varchar(6), pk), 6)

But as you have values more than 6 digits, try this

LTRIM(RIGHT ('    000000' + CONVERT(varchar(10), pk), 10))


But you need a CASE to deal with numbers that are 7-9 digits long:.

CASE
    WHEN pk >= 1000000 THEN CONVERT(varchar(10), pk)
    ELSE RIGHT ('000000' + CONVERT(varchar(6), pk), 6)
END
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文