首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在sql中将前导0添加到int的最有效方法

在sql中将前导0添加到int的最有效方法
EN

Stack Overflow用户
提问于 2009-04-22 19:52:18
回答 5查看 52.4K关注 0票数 12

我需要从数据库返回两个连接为'field1-field2‘的字段。第二个字段是int,但需要以固定长度5和前导0返回。我使用的方法是:

代码语言:javascript
运行
复制
SELECT Field1 + '-' + RIGHT('0000' + CAST(Field2 AS varchar),5) FROM ...

有没有更有效的方法来做到这一点?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-04-22 19:55:10

这几乎就是解决问题的方法:Adding Leading Zeros To Integer Values

因此,为了保存链接,查询如下所示,其中#Numbers是表,Num是列:

代码语言:javascript
运行
复制
   SELECT RIGHT('000000000' + CONVERT(VARCHAR(8),Num), 8) FROM #Numbers

对于负值或正值

代码语言:javascript
运行
复制
declare @v varchar(6)
select @v = -5

SELECT case  when @v < 0 
then '-' else '' end + RIGHT('00000' + replace(@v,'-',''), 5) 
票数 34
EN

Stack Overflow用户

发布于 2009-04-22 20:43:41

另一种方式(不进行强制转换或转换):

代码语言:javascript
运行
复制
SELECT RIGHT(REPLACE(STR(@NUM),' ','0'),5)
票数 8
EN

Stack Overflow用户

发布于 2009-04-22 20:01:09

如果你负担得起/想要在你的数据库中有一个函数,你可以使用类似这样的东西:

代码语言:javascript
运行
复制
CREATE FUNCTION LEFTPAD
           (@SourceString VARCHAR(MAX),
            @FinalLength  INT,
            @PadChar      CHAR(1)) 
RETURNS VARCHAR(MAX)
AS
BEGIN
  RETURN
    (SELECT Replicate(@PadChar, @FinalLength - Len(@SourceString)) + @SourceString)
END
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/778909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档