原文: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. XSS漏洞的分类

    XSS漏洞依照攻击利用手法的不同,有下面三种类型: 类型A,本地利用漏洞,这样的漏洞存在于页面中client脚本自身.其攻击步骤例如以下所看到的: Alice给Bob发送一个恶意构造了Web的URL. ...

  2. JDBC与反射

    什么是JDBC Java定义了一套关于连接使用数据库的规范(接口)叫做JDBC,许多数据库厂商实现了这个规范,所以我们可以通过Java提供的接口编程,使得我们更换数据库的时候不用修改原来的代码,只需要 ...

  3. 打开或导入项目,从脱机 Outlook 数据文件 (.ost)

    打开或导入项目,从脱机 Outlook 数据文件 (.ost) Microsoft Outlook 2010 doesn\rquote t 支持手动打开或导入项目,从一个 脱机 Outlook 数据文 ...

  4. 《深入理解mybatis原理》 Mybatis初始化机制具体解释

    对于不论什么框架而言.在使用前都要进行一系列的初始化,MyBatis也不例外. 本章将通过下面几点具体介绍MyBatis的初始化过程. 1.MyBatis的初始化做了什么 2. MyBatis基于XM ...

  5. ActiveMQ相关背景(转)

    概述 介绍中间件.MOM.JMS.ActiveMQ,及相互的关系. 中间件 由于业务的不同.技术的发展.硬件和软件的选择有所差别,导致了异构组件或应用并存的局面.要使这些异构的组件协同工作,一个有效的 ...

  6. NYOJ 709(ZZULIOJ1481) 异 形 卵

    题目描写叙述 我们探索宇宙,是想了解浩瀚星空的奥妙,但我们却非常少意识到宇宙深处藏匿的危急,它们无时无刻不紧盯着我们的地球.假设外星人拜訪我们,结果可能与哥伦布当年踏足美洲大陆不会有什么两样,这是历史 ...

  7. dij算法为什么不能处理负权,以及dij算法变种

    对于上面那张图,是可以用dij算法求解出正确答案,但那只是巧合而已. 我们再看看下面这张图. dist[4] 是不会被正确计算的. 因为dij算法认为从队列出来的点,(假设为u)肯定是已经求出最短路的 ...

  8. MySQL Windows ZIP 免费安装和启动设置

    MySQL Windows ZIP免安装版,设置和启动的过程事实上挺麻烦的.以下一步一步介绍使用的过程: 1.下载Windows (x86, 64-bit), ZIP Archive: 2.解压zip ...

  9. 工作经常使用的SQL整理,实战篇(二)

    原文:工作经常使用的SQL整理,实战篇(二) 工作经常使用的SQL整理,实战篇,地址一览: 工作经常使用的SQL整理,实战篇(一) 工作经常使用的SQL整理,实战篇(二) 工作经常使用的SQL整理,实 ...

  10. android面试题 不单单为了面试也是一次非常好的学习

    以以下试题都是在网上找的总结出来的,谢谢大家的分享!希望,我们共同进步,找到自己梦想的公司: 1.android dvm 的进程和Linux的进程,应用程序的进程是否为同一个概念: 答:dvm是dal ...