在SQLServer中,需要获得中文汉字GB2312编码的十六进制代码,能够通过CAST('汉字' as Binvary)然后转换获得。
但在自定义函数中用同样的方法,返回的却是不一样的代码。
这是什么原因?怎么解决?
运行环境:win8.1简体中文版 + SQL Server2012简体中文版
自定义函数如下:
CREATE FUNCTION [dbo].[fn_CastTest](@Input NVARCHAR(100))
RETURNS VARCHAR(200)
AS
BEGIN
RETURN master.sys.fn_varbintohexsubstring(0,CAST(@Input AS VARBINARY),1,0);
END
--测试:
SELECT [dbo].[fn_CastTest]('汉字');
SELECT master.sys.fn_varbintohexsubstring(0,CAST('汉字' AS VARBINARY),1,0) AS [Direct];
/****返回结果****
496c575b
babad7d6
****************/
把你的函数入参修改为varchar类型,或者直接调用时加上N'汉字',怀疑是编码问题。
正解,谢谢!
修改后OK!
修改输入参数类型为 @Input VARCHAR(100) 就OK了!
@sealine: 嗯。呵呵~