binary、char类型数据互转函数

最近在做项目时,需要把binary类型数据转换成字符类型的数据,发现原来可以这样写,记录下来供需要的童靴参考。

IF OBJECT_ID(‘fn_BinaryToChar‘) IS NOT NULL
DROP FUNCTION fn_BinaryToChar
GO

/* =============================================
-- 作者: Haytor
-- 日期: 2015-09-09
-- 描述: 把16进制数据转换成字符串数据
-- 示例:

DECLARE @varBin VARBINARY(128)
SET @varBin = 0x530054004400300030003100
--SELECT dbo.Fun_ConvertVarBinaryToVarChar(@varBin) --老方法
SELECT dbo.fn_BinaryToChar(@varBin)

-- =============================================
*/
CREATE FUNCTION fn_BinaryToChar(
@varBin VARBINARY(MAX)
) RETURNS VARCHAR(MAX) AS
BEGIN
DECLARE @varChar VARCHAR(MAX)

SET @varChar = CAST(‘‘ AS XML).value(‘xs:hexBinary(sql:variable("@varBin") )‘, ‘varchar(max)‘)

RETURN @varChar
END
GO

IF OBJECT_ID(‘fn_CharToBinary‘) IS NOT NULL
DROP FUNCTION fn_CharToBinary
GO
/* =============================================
-- 作者: Haytor
-- 日期: 2015-09-09
-- 描述: 把成字符串数据转换成16进制数据
-- 示例:

DECLARE @varChar VARCHAR(128)
SET @varChar = ‘530054004400300030003100‘
SELECT dbo.fn_CharToBinary(@varChar)

-- =============================================
*/
CREATE FUNCTION fn_CharToBinary(
@varChar VARCHAR(MAX)
) RETURNS VARBINARY(MAX) AS
BEGIN
DECLARE @varBin VARBINARY(MAX)
DECLARE @i INT

SET @i = CHARINDEX(‘0x‘,@varChar)

IF @i > 0
SET @varBin = CAST(‘‘ AS XML).value(‘xs:hexBinary(substring(sql:variable("@varChar"),3))‘, ‘varbinary(max)‘)
ELSE
SET @varBin = CAST(‘‘ AS XML).value(‘xs:hexBinary(sql:variable("@varChar"))‘, ‘varbinary(max)‘)

RETURN @varBin
END
GO

时间: 2024-08-02 16:56:07

binary、char类型数据互转函数的相关文章

C语言中,double、long、unsigned、int、char类型数据所占字节数

C语言中,double.long.unsigned.int.char类型数据所占字节数和机器字长及编译器有关系: 所以,int,long int,short int的宽度都可能随编译器而异.但有几条铁定的原则(ANSI/ISO制订的): 1 sizeof(short int)<=sizeof(int) 2 sizeof(int)<=sizeof(long int) 3 short int至少应为16位(2字节) 4 long int至少应为32位. unsigned 是无符号的意思. 16位编

在C语言中,double long unsigned int char 类型数据所占字节数

在C语言中,double  long  unsigned  int  char  类型数据所占字节数和机器字长及编译器有关系:所以,int,long int,short int的宽度都可能随编译器而异.但有下面几条原则(ANSI/ISO制订的): 1 sizeof(short int)<=sizeof(int) 2 sizeof(int)<=sizeof(long int) 3 short int至少应为16位(2字节) 4 long int至少应为32位. unsigned 是无符号的意思.

TCHAR和CHAR类型的互转

http://blog.csdn.net/ahjxly/article/details/8494217 http://blog.csdn.net/b_h_l/article/details/7581519 http://blog.chinaunix.net/uid-339069-id-3402668.html 没有定义UNICODE,所以它里面的字符串就是简单用" "就行了,创建工程的时候包含了UNICODE定义,就必须对TCHAR和char进行转换. void TcharToChar

在C语言中,double、long、unsigned、int、char类型数据所占字节数

和机器字长及编译器有关系: 所以,int,long int,short int的宽度都可能随编译器而异.但有几条铁定的原则(ANSI/ISO制订的): 1 sizeof(short int)<=sizeof(int) 2 sizeof(int)<=sizeof(long int) 3 short int至少应为16位(2字节) 4 long int至少应为32位. unsigned 是无符号的意思. 例如: 16位编译器 char :1个字节 char*(即指针变量): 2个字节 short

【转载】在C语言中,double、long、unsigned、int、char类型数据所占字节数

和机器字长及编译器有关系: 所以,int,long int,short int的宽度都可能随编译器而异.但有几条铁定的原则(ANSI/ISO制订的): 1 sizeof(short int)<=sizeof(int) 2 sizeof(int)<=sizeof(long int) 3 short int至少应为16位(2字节) 4 long int至少应为32位. unsigned 是无符号的意思. 例如: 16位编译器 char :1个字节 char*(即指针变量): 2个字节 short

JAVA数据类型中的char类型

1.JAVA中,char占2字节,16位.可在存放汉字 2.char赋值 char a='a'; //任意单个字符,加单引号. char a='中';//任意单个中文字,加单引号. char a=111;//整数.0~65535.十进制.八进制.十六进制均可.输出字符编码表中对应的字符. 注:只能放单个字符. 3.char运算 char类型是可以运算的因为char在ASCII等字符编码表中有对应的数值. 在JAVA中,对char类型字符运行时,直接当做ASCII表对应的整数来对待. 示例1: c

【c语言】实现对一个8bit数据(unsigned char 类型)的指定位(例如第n位)置0或者置1操作,并保持其他位不变

// 实现对一个8bit数据(unsigned char 类型)的指定位(例如第n位)置0或者置1操作,并保持其他位不变 #include <stdio.h> void bit_set(unsigned char *p_data, unsigned char position, int flag) { unsigned c; unsigned char a = 1; a = a << (position - 1); if (flag == 1) { *p_data = *p_dat

关于各种类型数据char、int、double、float 所占空间长度的计算,而char类型让我长姿势了

1 #include <iostream> 2 int main() 3 { 4 using namespace std; 5 //int A=10; 6 //double B=6; 7 cout << sizeof(int) << endl; 8 cout << sizeof(double) << endl; 9 cout << sizeof(float) << endl; 10 cout << sizeof

QSort函数对不同类型数据快速排序浅谈

一.对int类型数组排序 int num[100]; int cmp ( const void *a , const void *b ){return *(int *)a - *(int *)b;} qsort(num,100,sizeof(num[0]),cmp); 二.对char类型数组排序(同int类型) char word[100]; int cmp( const void *a , const void *b ){return *(char *)a - *(int *)b;} qsor