Oracle 如何将NCHAR的hexa代码获取到VARCHAR2中
我正在将T-SQL脚本转换为pl/SQL。我需要你的帮助,关于转换类型。 我的t-sql脚本:Oracle 如何将NCHAR的hexa代码获取到VARCHAR2中,oracle,tsql,plsql,type-conversion,Oracle,Tsql,Plsql,Type Conversion,我正在将T-SQL脚本转换为pl/SQL。我需要你的帮助,关于转换类型。 我的t-sql脚本: set @cust_name_hex = convert(VARCHAR(max),convert(varbinary(max), @cust_name),2) 我的转换,但我不是很确定 set cust_name_hex = TO_CHAR(cust_name); 我必须获得'cust_name'变量的十六进制代码。我在网上到处搜索,找到了WARTOHEX功能。 我没听你说变量cust_name
set @cust_name_hex = convert(VARCHAR(max),convert(varbinary(max), @cust_name),2)
我的转换,但我不是很确定
set cust_name_hex = TO_CHAR(cust_name);
我必须获得'cust_name'变量的十六进制代码。我在网上到处搜索,找到了WARTOHEX
功能。
我没听你说变量cust_name是一个NCHAR
。因此我理解t-sql中的转换模式:NVARCHAR
->VARBINARY
->VARCHAR
。
在PL/SQL中,我尝试进行相同的转换,但没有得到好的结果。。我不知道如何将
VARCHAR2
中的NCHAR
转换为Hexa值…UTL_RAW.CAST_to_RAW和RAWTOHEX函数的组合应该可以完成以下工作:
SELECT RAWTOHEX(UTL_RAW.CAST_TO_RAW(N'unicode text')) FROM DUAL;
或者使用PL/SQL
DECLARE
cust_name_hex VARCHAR2(255);
BEGIN
cust_name_hex := RAWTOHEX(UTL_RAW.CAST_TO_RAW(N'unicode text'));
DBMS_OUTPUT.PUT_LINE(cust_name_hex);
END;
UTL_RAW.CAST_TO_RAW和RAWTOHEX函数的组合应该可以完成以下工作:
SELECT RAWTOHEX(UTL_RAW.CAST_TO_RAW(N'unicode text')) FROM DUAL;
或者使用PL/SQL
DECLARE
cust_name_hex VARCHAR2(255);
BEGIN
cust_name_hex := RAWTOHEX(UTL_RAW.CAST_TO_RAW(N'unicode text'));
DBMS_OUTPUT.PUT_LINE(cust_name_hex);
END;
SELECT DUMP('text',16)FROM dual
相当于SQL Server的CONVERT()
的标准似乎是CAST()
函数。Thx对于巡更答案,我也看到了CAST函数,我将处理它。我现在无法访问我的Oracle数据库,但如果可以,我将执行您的查询。你能给我解释一下原则是什么吗?我只知道一点哑表,但不是很好的SELECT DUMP('text',16)FROM dual
相当于SQL Server的CONVERT()
的标准似乎是CAST()
函数。Thx对于教程答案,我也看到了CAST函数,我将继续使用它。我现在无法访问我的Oracle数据库,但如果可以,我将执行您的查询。你能给我解释一下原则是什么吗?我知道这张桌子有点笨,但不太好嗨,谢谢,这正是我要找的。但只是一个细节,我能写下这个吗cust_name_hex:=RAWTOHEX(UTL_RAW.CAST_TO_RAW(cust_name));因为我在演员阵容中加入了NCHAR,然后我拿了一个varchar2。。。这不是问题吗?N'value'表示NCHAR/NVARCHAR2,我测试了强制转换为原始,它生成了正确的字节,NCHAR/NVARCHAR2每个字符两个。嗨,谢谢,这正是我要找的。但只是一个细节,我能写下这个吗cust_name_hex:=RAWTOHEX(UTL_RAW.CAST_TO_RAW(cust_name));因为我在演员阵容中加入了NCHAR,然后我拿了一个varchar2。。。这不是问题吗?N'value'表示NCHAR/NVARCHAR2,我测试了强制转换为RAW,它生成了正确的字节,对于NCHAR/NVARCHAR2,每个字符两个字节。