当前位置: 首页 > news >正文

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

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


现象:

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

 

说明:

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

 

案例:

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

首先,执行下面语句:

--查询部门数据

SELECT DepartmentID,Name

FROM AdventureWorks.HumanResources.Department

 

结果如下:

 

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

代码如下:

--查询部门数据并将数字根据位数补上0

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

 

使用例子:

--查询部门数据并将数字根据位数补上0

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

FROM AdventureWorks.HumanResources.Department

ORDER BY 1

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

结果如下:

 

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

 

 

相关文章:

  • 康托展开
  • CC254x/CC2540/CC2541库函数速查(转)
  • Netscaler的超高端口复用助力应对公网地址紧张
  • HTML页面跳转的5种方法
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • 应该知道的Linux技巧(转载)
  • Oracle如何查看执行计划
  • python 图片上添加文字
  • 面试题35-第一个值出现依次的字符
  • VIM空格和TAB转换
  • redhat 6 配置 yum 源的两种方法
  • 算法笔记_041:寻找和为定值的多个数(Java)
  • 用外部表的方式查询当天数据库alert日志文件
  • css 如何让背景图片拉伸填充避免重复显示
  • github常用操作
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • angular学习第一篇-----环境搭建
  • css系列之关于字体的事
  • echarts花样作死的坑
  • Git初体验
  • jquery ajax学习笔记
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • PHP 小技巧
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • vue-cli在webpack的配置文件探究
  • 成为一名优秀的Developer的书单
  • 思考 CSS 架构
  • 7行Python代码的人脸识别
  • 函数计算新功能-----支持C#函数
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • # 计算机视觉入门
  • #Spring-boot高级
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (javascript)再说document.body.scrollTop的使用问题
  • (ZT)一个美国文科博士的YardLife
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (转)JAVA中的堆栈
  • .jks文件(JAVA KeyStore)
  • .NET Core WebAPI中封装Swagger配置
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .Net 路由处理厉害了
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .Net面试题4
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • .Net中wcf服务生成及调用
  • @Autowired标签与 @Resource标签 的区别
  • [100天算法】-x 的平方根(day 61)
  • [20150321]索引空块的问题.txt
  • [acwing周赛复盘] 第 94 场周赛20230311