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的更多相关文章
- input内强制保留小数点后两位 位数不足时自动补0
input内强制保留小数点后两位 位数不足时自动补0 小数点后位数超出2位时进行四舍五入 需引入jquery包 1.11.2版本 1 function xiaoshu(x) 2 { 3 var f = ...
- java数字转字符串前面自动补0或者其他数字
/** * Java里数字转字符串前面自动补0的实现. * * @author xiaomo * */ public class TestStringFormat { public ...
- js正则格式化日期时间自动补0
原文 js正则格式化日期时间自动补0 背景 时间日期格式化的需求很常见,也有很多工具类转换方法,比如需要将2022-3-4这种日期格式转化为2022-03-04,也就是实现个位数月份或天数日期自动前置 ...
- mysql 查询近7天数据,缺失补0
相信很多人的项目都有这种需求,就是查询近7天的记录,但是这7天总有那么几天是没数据的,所以缺失的只能补 0 下面的代码不知道能不能看懂,我简单的说一下思路 1)先查询红色字体的近7天,再转换成日期 2 ...
- mysql查询最近7天的数据,没有数据自动补0
问题描述 查询数据库表中最近7天的记录 select count(*),date(create_time) as date from task where datediff(now(),create_ ...
- sql 不够七位数 在左侧自动补零 ,并循环插入N条记录
select right(cast('0000000000'+rtrim(字段) as varchar(20)),7) declare @i intdeclare @qid int set @i=1s ...
- MySQL实现按天分组统计,提供完整日期列表,无数据自动补0
业务需求最近要在系统中加个统计功能,要求是按指定日期范围里按天分组统计数据量,并且要能够查看该时间段内每天的数据量. 解决思路直接按数据表日期字段group by统计,发现如果某天没数据,该日期是不出 ...
- QT 十六进制整数变为字符串自动补0 && 十进制补零
QString str = QString("%1").arg(outChar&0xFF,2,16,QLatin1Char('0')); int a=0001; QStri ...
- 用c语言如何在数字前自动补0
一: #include <stdio.h>int main(){ long a=3,b=4,c=15; printf("......."a,b,c);return 0; ...
随机推荐
- 查询oracle表字段信息
表字段的信息咱们可以称之为元数据,今天有人问怎么把表字段的信息导出来,说实话我还不会用plsql develper把表的结构导出来,像下图所示: 在写数据库设计说明书的时候,想要把这个表格拷贝出来,这 ...
- 此文本文件包含的数据无法放置在一个工作表中 gb2312
excel导入csv,csv要从unicode转为gb2312, 否则提示:此文本文件包含的数据无法放置在一个工作表中
- 关于Relay Log无法自己主动删除的问题(Neither --relay-log nor --relay-log-index were used)
今天查看mysql err日志.发现mysql重新启动时总会有例如以下日志出现: [Warning] Neither --relay-log nor --relay-log-index were us ...
- Linux内核的同步机制---自旋锁
自旋锁的思考:http://bbs.chinaunix.net/thread-2333160-1-1.html 近期在看宋宝华的<设备驱动开发具体解释>第二版.看到自旋锁的部分,有些疑惑. ...
- hadoop的一些名词解释
在网上收集了一些mapreduce中常用的一些名词的解释,分享一下: Shuffle(洗牌):当第一个map任务完成后,节点可能还要继续执行更多的map 任务,但这时候也开始把map任务的中间输出交换 ...
- SQL Server :理解GAM和SGAM页
原文:SQL Server :理解GAM和SGAM页 我们知道SQL Server在8K 的页里存储数据.分区就是物理上连续的8个页.当我们创建一个数据库,数据文件会被逻辑分为页和区,当用户对象创建时 ...
- ecshop2.7.3怎么自动清除缓存
1.在ecs_shop_config表中插入一条数据 进入ECSHOP后台-数据库管理-SQL查询 复制下面SQL,粘贴到里面执行.注意这时是默认表前缀ecs_,如果你的修改过要和你的统一了. INS ...
- java reflect反思总结
--------------TestBean package lh.demo.bean; public class TestBean { private String userName; priv ...
- C++ Primer 学习笔记_40_STL实践与分析(14)--概要、先来看看算法【上】
STL实践与分析 --概述.初窥算法[上] 标准库容器定义的操作很少.并没有给容器加入大量的功能函数.而是选择提供一组算法,这些算法大都不依赖特定的容器类型,是"泛型"的. ...
- 【转】QT样式表 (QStyleSheet)
作者:刘旭晖 Raymond 转载请注明出处Email:colorant@163.comBLOG:http://blog.csdn.net/colorant/ 除了子类化Style类,使用QT样式表( ...