原文:T-SQL使用案例——结果数据前面自动补0

现象:

在开发的过程中,往往需要数字和字符串互转。在转换的过程中,可能需要把1编程00001,这样的格式。实现这种样子是有非常多的方法,本文主要提供一种自定义函数来实现

说明:

一般来说这种处理主要使用CONVERT或者CAST来实现即可。思路是先转换为字符串然后在不上足够数量的0,最后使用RIGHT函数,从右边取出需要长度。

案例:

本例中使用AdventureWork数据库作为例子。

首先,执行下面语句:

--查询部门数据

SELECT DepartmentID,Name

FROM AdventureWorks.HumanResources.Department

结果如下:

然后,使用CAST将原来部门编号转换成VARCHAR()字符串。接着加上固定数量的0,然后利用RIGHT函数,从右边去除指定数量的字符串。

代码如下:

SELECT RIGHT(REPLICATE('0',5)+CAST(DepartmentID
AS varchar(10)),5)
AS 'DepartmentID',Name

FROM AdventureWorks.HumanResources.Department

ORDER BY
DepartmentID

结果:

以上的是准备工作,现在开始编写一个自定义函数来实现,此函数有两个参数,第一个参数是要补0或者其他数目的个数,第二个是要转换的数字。最后把结果以字符串方式返回:

函数代码:

CREATE FUNCTION
fnZero

(

@n INT,

@i INT

)

RETURNS
VARCHAR(125)

AS

BEGIN

RETURN

(

RIGHT(REPLICATE('0',@n)+CAST(@i
as varchar(125)),@n)

)

END

使用例子:

SELECT DepartmentID
as 'DepartmentID',dbo.fnZero(5,DepartmentID)
as 'DepartmentID'

FROM AdventureWorks.HumanResources.Department

ORDER BY 1

注意,由于两个列都是同名,所以ORDER BY 那里使用了1,而不是列名.

结果如下:

当然,也可以改进该函数,使得函数能满足很多要求.这部分请读者自己去研究了.

T-SQL使用案例——结果数据前面自动补0的更多相关文章

  1. input内强制保留小数点后两位 位数不足时自动补0

    input内强制保留小数点后两位 位数不足时自动补0 小数点后位数超出2位时进行四舍五入 需引入jquery包 1.11.2版本 1 function xiaoshu(x) 2 { 3 var f = ...

  2. java数字转字符串前面自动补0或者其他数字

    /**  * Java里数字转字符串前面自动补0的实现.  *  * @author  xiaomo *  */  public class TestStringFormat {    public ...

  3. js正则格式化日期时间自动补0

    原文 js正则格式化日期时间自动补0 背景 时间日期格式化的需求很常见,也有很多工具类转换方法,比如需要将2022-3-4这种日期格式转化为2022-03-04,也就是实现个位数月份或天数日期自动前置 ...

  4. mysql 查询近7天数据,缺失补0

    相信很多人的项目都有这种需求,就是查询近7天的记录,但是这7天总有那么几天是没数据的,所以缺失的只能补 0 下面的代码不知道能不能看懂,我简单的说一下思路 1)先查询红色字体的近7天,再转换成日期 2 ...

  5. mysql查询最近7天的数据,没有数据自动补0

    问题描述 查询数据库表中最近7天的记录 select count(*),date(create_time) as date from task where datediff(now(),create_ ...

  6. sql 不够七位数 在左侧自动补零 ,并循环插入N条记录

    select right(cast('0000000000'+rtrim(字段) as varchar(20)),7) declare @i intdeclare @qid int set @i=1s ...

  7. MySQL实现按天分组统计,提供完整日期列表,无数据自动补0

    业务需求最近要在系统中加个统计功能,要求是按指定日期范围里按天分组统计数据量,并且要能够查看该时间段内每天的数据量. 解决思路直接按数据表日期字段group by统计,发现如果某天没数据,该日期是不出 ...

  8. QT 十六进制整数变为字符串自动补0 && 十进制补零

    QString str = QString("%1").arg(outChar&0xFF,2,16,QLatin1Char('0')); int a=0001; QStri ...

  9. 用c语言如何在数字前自动补0

    一: #include <stdio.h>int main(){ long a=3,b=4,c=15; printf("......."a,b,c);return 0; ...

随机推荐

  1. SVN常见问题及解决方案

    . 隐藏文件.svn目录删除了怎么办 Checkout后,工作空间下.svn目录下有大量隐藏文件,占用比较大的空间,他们是工作空间的管理文件,不能删除,如果不小心删除了也不要抓狂,不会影响服务器端的, ...

  2. Android横屏竖屏设置

    Android横竖屏设置: 方法一:onCreate()中 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); // ...

  3. 【超有用】图解--怎样使用本地的dtd文件映射

    曾经一直非常苦恼,假设电脑上不了网,就比較麻烦了.自己在配置HIbernate的属性的时候.不知道属性名有没有写错.. 如今和大家分享一下,毕竟自己痛苦过了,大家不要和我一样痛苦.

  4. Beginning Python From Novice to Professional (4) - 演示样本格式字符串

    $ gedit price.py #!/usr/bin/env python width = input('Please enter width: ') price_width = 10 item_w ...

  5. Windows phone 8 学习笔记(6) 多任务

    原文:Windows phone 8 学习笔记(6) 多任务 Windows phone 8 是一个单任务操作系统,任何时候都只有一个应用处于活跃状态,这里的多任务是指对后台任务的支持.本节我们先讲讲 ...

  6. NYOJ 47 河问题

    时间限制:1000 ms  |  内存限制:65535 KB 难度:5 描写叙述 在漆黑的夜里,N位旅行者来到了一座狭窄并且没有护栏的桥边.假设不借助手电筒的话,大家是不管怎样也不敢过桥去的.不幸的是 ...

  7. Emacs经常使用快捷键的注意事项

    一直用VIM,尝试了好几次Emacs都被它"多得像天上的星星"一样的快捷键给吓倒了.这几天最终下定决心再次尝试. 将它的Tutor练习了一下,顺便对经常使用快捷键做了一下笔记,方便 ...

  8. hihocoder第42周 k*N骨牌覆盖(状态dp+矩阵快速幂)

    上周的3*N的骨牌,因为状态只有8中,所以我们可以手算出状态转移的矩阵 但是这周是k*N,状态矩阵不好手算,都是我们改成用程序自动生成一个状态转移的矩阵就行了,然后用这个矩阵进行快速幂即可 枚举枚举上 ...

  9. 使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表

    原文:使用.netFx4.0提供的方法解决32位程序访问64位系统的64位注册表 我们知道目标平台是32位的程序运行在64位的系统上,去访问部分注册表的时候系统自动重定向到win32node节点对应的 ...

  10. Java使用LdAP获取AD域用户

    随着我们的习大大上台后,国家在网络信息安全方面就有了非常明显的改变!所以如今好多做网络信息安全产品的公司和须要网络信息安全的公司都会提到用AD域server来验证,这里就简单的研究了一下! 先简单的讲 ...