sql 进制转换,支持93内的进制相互转换
功能:实现在SQL内进制的互相转换,支持从2 - 93进制内的转换,若需要支持其他字符,可以自定义@ym变量实现扩充
-- =============================================
-- Author: bwch
-- Create date: 2014年9月30日10:32:47
-- Description: 把一个数字转换成指定进制,最大支持93进制,也可在Function内扩充@ym实现其他的转换
-- =============================================
ALTER FUNCTION [dbo].[BigIntToHexStr](
@value BIGINT, --需要转换的数字
@jz INT = 16 --默认16进制
)
RETURNS VARCHAR(50) --返回值,进制转换后的字符串
AS
BEGIN
--可通过扩充@ym扩充其他的进制
DECLARE @seq VARCHAR(2000) --字符掩码
DECLARE @ym VARCHAR(2000) --掩码
SET @ym = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`~!@#$%^&*()-_=+[]{}\|;:",.<>/?'
SET @seq = SUBSTRING(@ym,1,@jz)
--返回值
DECLARE @result VARCHAR(50)
--取数字的字符
DECLARE @digit CHAR(1)
SET @result = SUBSTRING(@seq, (@value%@jz)+1, 1) WHILE @value > 0
BEGIN
SET @digit = SUBSTRING(@seq, ((@value/@jz)%@jz)+1, 1)
SET @value = @value/@jz
IF @value <> 0
SET @result = @digit + @result
END
RETURN @result
END
-- =============================================
-- Author: bwch
-- Create date: 2014年9月30日10:36:14
-- Description: 把转换过的进制转换成数字
-- =============================================
ALTER FUNCTION [dbo].[HexStrToBigInt]
(
@value VARCHAR(20), --转换过的字符串
@jz INT = 16 --进制,默认16进制
)
RETURNS BIGINT
AS
BEGIN
DECLARE @result BIGINT
DECLARE @ym VARCHAR(2000) --掩码
SET @ym = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`~!@#$%^&*()-_=+[]{}\|;:",.<>/?'
DECLARE @i INT = LEN(@value) - 1
DECLARE @digit CHAR(1)
SET @result = (CHARINDEX(SUBSTRING(@value,LEN(@value),1),@ym)-1)
DECLARE @w INT
WHILE @i > 0
BEGIN
SET @digit = SUBSTRING(@value,@i,1)
SET @w = (CHARINDEX(@digit,@ym)-1) * POWER(@jz,(LEN(@value) - @i))
SET @result = @result + @w
SET @i = @i - 1
END
RETURN @result
END
测试用例:
DECLARE @i BIGINT = 10000, @jz INT = 32
DECLARE @str VARCHAR(20) = dbo.BigIntToHexStr(@i,@jz)
PRINT '数字 ' + CAST(@i AS VARCHAR(20)) + ' 转换成' + CAST(@jz AS VARCHAR(2)) + '进制的结果为: '+ @str
DECLARE @r BIGINT =dbo.HexStrToBigInt(@str,@jz)
PRINT CAST(@jz AS VARCHAR(2)) +'进制的字符串 ' + @str + ' 转换成数字为:' + CAST(@r AS VARCHAR(20))
测试结果:
数字 10000 转换成32进制的结果为: 9OG
32进制的字符串 9OG 转换成数字为:10000
测试环境
Windows 7 x64 + SQL Server 2008 Express R2
sql 进制转换,支持93内的进制相互转换的更多相关文章
- JS-011-颜色进制转换(RGB转16进制;16进制转RGB)
在网页开发的时候,经常需要进行颜色设置,因而经常需要遇到进行颜色进制转换的问题,例如:RGB转16进制:16进制转RGB),前几天在测试的时候,发现网站的颜色进制转换某类16进制颜色(例如:#0000 ...
- 流程控制 if while for 已及数字类型 进制转换
一:if 语句 语法一:ifif 条件: code1 code1 code1 语法二:if ...else ... if 条件: code1 code1 code1else: code1 code1 ...
- Oracle 中的进制转换
Oracle 中的进制转换 */--> Oracle 中的进制转换 Table of Contents 1. 进制名 2. 10进制与16进制互相转换 2.1. 10进制转换为16进制 2.2. ...
- Python进制转换format格式化
进制转换:先介绍用传统数学方法,再介绍用python内置方法 二进制转十进制: 1101 转为十进制 1*2^(4-1)+1*2^(3-1)+0*2^(2-1)+1*2^(1-1) 即各个位拆开,乘以 ...
- 【JavaScript】进制转换&位运算,了解一下?
前言 在一般的代码中很少会接触到进制和位运算,但这不代表我们可以不去学习它.作为一位编程人员,这些都是基础知识.如果你没有学过这方面的知识,也不要慌,接下来的知识并不会很难.本文你将会学习到: 进制转 ...
- JavaScript中的多种进制与进制转换
进制介绍 JavaScript 中提供的进制表示方法有四种:十进制.二进制.十六进制.八进制. 对于数值字面量,主要使用不同的前缀来区分: 十进制(Decimal): 取值数字 0-9:不用前缀. 二 ...
- 【String与基本类型之间的转换】以及【进制转换】
1. 基本数据类型---->字符串类型: 方法一:使用连接一个空字符串,例如 基本数据类型+“” : 方法二:静态方法 String.valueOf(),具体有: String.valueOf ...
- js进制转换
var n = 17; var n2 = n.toString(2); var n8 = "0" + n.toString(8); var n16 = "0x" ...
- 【Java例题】6.1 进制转换
1.进制转换.输入一个某种进制的整数,将其转换为其它进制的整数.说明:仅考虑十.二.八和十六进制. package chapter6; import java.util.*; public class ...
随机推荐
- 以太网PHY 芯片之 MII/MDIO接口详解
本文主要分析MII/RMII/SMII,以及GMII/RGMII/SGMII接口的信号定义,及相关知识,同时本文也对RJ-45接口进行了总结,分析了在10/100模式下和1000M模式下的设计方法. ...
- 微软可疑更新DhMachineSvc.exe
微软最近推出了大规模的更新仅针对中国.它包括DhMachineSvc.exe.所谓'微软设备健康助手服务'. 此更新是惊人的,首先,此更新只针对中国地区,其次,此更新支持WinXP,第三次更新一定的强 ...
- Oracle中使用Entity Framework 6.x Code-First
Oracle中使用Entity Framework 6.x Code-First方式开发 去年写过一篇EF的简单学习笔记,当时EF还不支持Oracle的Code-First开发模式,今天无意又看了下O ...
- Redis实现高并发分布式序列号
使用Redis实现高并发分布式序列号生成服务 序列号的构成 为建立良好的数据治理方案,作数据掌握.分析.统计.商业智能等用途,业务数据的编码制定通常都会遵循一定的规则,一般来讲,都会有自己的编码规则和 ...
- jQuery自定义右键菜单
首先看下效果,效果在最下面: 代码: body { font-size: 12px; margin: 0px; padding: 0px; } form,div,ul,li { margin: 0px ...
- C语言qsort函数算法性能测试
对于该算法的复杂性.一个直接的方法是测量的一定量的算法级数据的执行时间的感知. 随着C语言提供qsort对于示例.随着100一万次的数据,以测试其计算量.感知O(nlg(n))时间成本: C码如下面: ...
- iOS、真机调试
Xcode中IOS.真机测试 一.购买开发者账号(需要有信用卡.每年支付$99.0) 二.直接淘宝购买一个.用于测试,但是不能上传App 1.获取手机的UUID(Identifier xxxxxx9e ...
- 在Windows系统中安装集成的PHP开发环境
原文:在Windows系统中安装集成的PHP开发环境 刚想学php的,又不会配置复杂php的环境,可以使用集成的,目前网上提供常用的PHP集成环境主要有AppServ.phpStudy.WAMP和XA ...
- Emojicon - 为你提供emoji表情的整套方案
Github : https://github.com/rockerhieu/emojicon 事实上国内的<表情大全>也有提供类似整套表情解决方式,并且还支持gif表情:http://w ...
- Sqlserver2008安装部署文档
Sqlserver2008部署文档 注意事项: 如果你要安装的是64位的服务器,并且是新机器.那么请注意,你需要首先需要给64系统安装一个.net framework,如果已经安装此功能,请略过这一步 ...