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,而不是列名.

结果如下:

 

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

 

 

时间: 2024-07-31 06:51:25

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

php基于str_pad实现卡号不足位数自动补0的方法_php技巧

自动补足空白位数在php中str_pad函数可以帮我们实现哦,str_pad() 函数把字符串填充为指定的长度. str_pad() 函数把字符串填充为指定的长度. 语法 str_pad(string,length,pad_string,pad_type) 参数 描述 string 必需.规定要填充的字符串. length 必需.规定新字符串的长度.如果该值小于原始字符串的长度,则不进行任何操作. pad_string 可选.规定供填充使用的字符串.默认是空白. pad_type 可选.规定填充

php str_pad实现卡号不足位数自动补0

str_pad() 函数把字符串填充为指定的长度. 语法 str_pad(string,length,pad_string,pad_type) 参数 描述 string 必需.规定要填充的字符串. length 必需.规定新字符串的长度.如果该值小于原始字符串的长度,则不进行任何操作. pad_string 可选.规定供填充使用的字符串.默认是空白. pad_type 可选.规定填充字符串的那边. 可能的值: STR_PAD_BOTH - 填充到字符串的两头.如果不是偶数,则右侧获得额外的填充.

oracle11g-使用sql语句select插入数据时怎么用行号补0为流水号做完单号保存

问题描述 使用sql语句select插入数据时怎么用行号补0为流水号做完单号保存 使用select语句像某个表中插入数据,表的单号要为该语句的ItemCode的值+5位流水号.流水号的规则是查询出来的"RowNum"的值自动补0为5为流水号.怎么出入,查询数据如图 解决方案 新增一列numerical order 类型为字符串 然后写个方法计算numerical order ,insert进去. 但只用sql语句的话,还没想到. 解决方案二: 试试这个: select itemcode

大数据与机器学习:实践方法与行业案例.3.3 自动加载程序的数据库设计

3.3 自动加载程序的数据库设计 根据之前的设计,自动加载程序需要从数据库配置表中获取配置信息,并不断更新相关的状态,表3-2列出了自动加载程序需要的所有配置表. 表3-2 自动加载程序的配置表 表 名 中文名称 用 途 file_settings 数据文件信息表 存储数据文件名称.日期等配置信息 file_status 数据文件状态表 存储数据文件的状态 load_config 加载配置信息表 存储数据库中表的相关信息 ftp_server 数据缓冲区信息表 存储数据缓冲区文件服务器的相关信息

大数据与机器学习:实践方法与行业案例.3.2 自动加载的流程

3.2 自动加载的流程 既然已经明确了数据缓冲区的基本规则,那么我们认为一个满足规则要求的数据缓冲区已经搭建起来了(可以向IT运维人员提出搭建FTP文件服务器的需求),接下来真正进入数据自动加载的设计过程. 首先,仔细分析文件从数据缓冲区自动加载到分析环境中的流程,可以将这个过程细分为4个阶段:扫描文件.下载文件.解压文件和加载文件,如图3-4所示.   图3-4 文件自动加载流程分解 这4个阶段的功能描述如下. 1)扫描文件.该阶段用于判断当前数据日期的文件是否已经完整存在于数据缓冲区中,一旦

[SQL]不要让SQLServer帮你自动转换SQL命令中的数据类型

server|sqlserver|数据|数据类型|转换 为什么不要让SQLServer帮你自动转换SQL命令中的数据类型Report Date:   2003/12/5 Prepared by:     郑昀 Article last modified on 2004-2-16 The information in this article applies to: ü         Microsoft SQL Server 2000,7.0问题陈述:有一天,执行 SELECT * FROM X

SQL Server .NET Framework 数据提供程序连接池

server|程序|数据 有朋友建议我控制连接池的连接,说是为了提高性能,但看了下面的这个文章,感觉连接池是由系统自身进行维护的,程序没有必要去进行控制的.大家有什么意见吗?在连接问题上,是否有提高性能的方法? SQL Server .NET Framework 数据提供程序连接池池连接可以显著提高应用程序的性能和可缩放性.SQL Server .NET Framework 数据提供程序自动为 ADO.NET 客户端应用程序提供连接池.您也可以提供几个连接字符串修饰符来控制连接池行为,请参见本主

SQL Server与Excel数据互导

excel|server|数据 从SQL Server中导入/导出 Excel 的基本方法 /*=================== 导入/导出 Excel 的基本方法 ===================*/ 从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句: /*========================================================*/ --如果接受数据导入的表已经存在 insert into 表 select * from

Linux系统如何对网站数据定期自动备份与删除?

  需求是这样的,首先网站文件和数据库需要每天自动备份,然后备份目录超过一定时间的删除,比如保留最近14天地备份 刚好vps是redhat,里面默认居然没有装crond的服务,输入以下命令安装 yum install cronie 创建备份脚本 vi /root/bakweb.sh 编辑并输入以下内容 #!/bin/bash find /home/bak/ -name '*' -type f -mtime +14 -exec rm {} ; tar zcvf /home/bak/www.peng