Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何将NCHAR的hexa代码获取到VARCHAR2中_Oracle_Tsql_Plsql_Type Conversion - Fatal编程技术网

Oracle 如何将NCHAR的hexa代码获取到VARCHAR2中

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

我正在将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是一个
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,每个字符两个字节。