在网上看到SQL字符串转16进制的语句,经过小小添加,现将SQL字符串与16进制互换的方法记录,以供以后查看。

--SQL char->HEX code
DECLARE @str VARCHAR(4000)
SET @str='SELECT * FROM dbo.TaskHistory' --Your sql char
DECLARE @i INT,@Asi INT,@ModS INT,@res VARCHAR(800),@Len INT,@Cres VARCHAR(4),@tempstr VARBINARY(400)
SELECT @i = 1,@res='',@len=DATALENGTH(@str),@tempStr = CONVERT(VARBINARY,@str)
WHILE @i<=@len
BEGIN
SELECT @Asi = SUBSTRING(@tempstr,1,1),@Cres=''
WHILE @Asi <> 0
BEGIN
SELECT @Mods = @Asi %16,
@Cres=CASE WHEN (@Mods > 9) THEN CHAR(ASCII('A')+@Mods-10)+@Cres ELSE CAST(@Mods AS VARCHAR(4)) + @Cres END,
@Asi = @Asi/16
END
SELECT @res = @res + @Cres,@tempStr =  SUBSTRING(@tempStr,2,@len-1),@i = @i+1
END
SELECT '0x'+@res

--HEX code->SQL char

这里使用最简单的方式,利用Cast直接转, 这里有个小小的问题,可能出现字符编码不正确或乱码,当出现这种情况时,将varchar换成nvarchar,反之亦然。

--HEX->SQL Char
DECLARE @S VARCHAR(4000);
SET @S=CAST(
0x53454C454354202A2046524F4D2064626F2E5461736B486973746F7279 --your hex code
AS VARCHAR(4000));
SELECT @S

在网上看到SQL字符串转16进制的语句,经过小小添加,现将SQL字符串与16进制互换的方法记录,以供以后查看。 --SQL char->HEX codeDECLARE @str VARCHAR(4000)SET @str=SELECT * FROM dbo.TaskHistory --Your sql charDECLARE @i INT,@Asi INT,@ModS INT,@res V
Java中的转换非常简单便捷,但有时候需要在后台实现转换,这里我包装成函数。Mark一下 – 字符串 转十六进制 CREATE FUNCTION dbo.StrTo Hex (@str varchar(100)) RETURNS varchar(800) BEGIN DECLARE @i INT,@Asi INT,@ModS INT,@res VARCHAR(800),@Len INT,@Cres VARCHAR(4),@tempstr VARBINARY(400) SELECT @i = 1,@res=’’
--通用的做法 select sys.fn_varbinto hex str(0x02000000DD6BE318DC3B2B260AA9923FE133FB046EA0EEE10000000000000000000000000000000000000000) --适合2014,不适合2005 SELECT '0x'+CONVERT(VARCHAR(MAX),0x02000000DD6BE318DC
SQL Server 中可以使用内置函数 `PARSE` 或者 `STRING_SPLIT` 来实现分隔 字符串 。 例如,要将 字符串 "A,B,C,D" 按照 "," 进行分隔,可以使用以下代码: SELECT value FROM STRING_SPLIT('A,B,C,D', ',') 也可以使用 `PARSE` 函数,例如: DECLARE @str nvarchar(50) = 'A,B,C,D'; WITH split (start, [end], value) AS SELECT 1, CHARINDEX(',', @str), SUBSTRING(@str, 1, CHARINDEX(',', @str) - 1) UNION ALL SELECT [end] + 1, CHARINDEX(',', @str, [end] + 1), SUBSTRING(@str, [end] + 1, CHARINDEX(',', @str, [end] + 1) - [end] - 1) FROM split WHERE [end] > 0 SELECT value FROM split; 这两种方法都可以用来分隔 字符串 ,您可以根据实际情况选择使用。