检查字符串是否是oracle raw(16)类型字段的字符串版本

时间:2013-05-13 14:38:17

标签: c# oracle types

是否可以检查C#中的字符串,是否是oracle raw(16)类型数据的字符串版本?例如,“5D03D47919127C4DBBD58AF69BF4D81A”是原始(16)类型数据的字符串版本。

3 个答案:

答案 0 :(得分:0)

从Oracle检索原始(字节)时,您需要执行以下操作:

var str = System.Text.Encoding.Default.GetString(rawColumnData);

由您来确保使用正确的编码。

答案 1 :(得分:0)

我不确定你真正在问什么。是这样的吗?

string hexstr = "5D03D47919127C4DBBD58AF69BF4D81A";

var allowChars = new HashSet<char>("0123456789ABCDEF");

bool isAHexString = hexstr.All(allowChars.Contains) && hexstr.Length == 32;

答案 2 :(得分:0)

不确定您的用例,但我更喜欢将32个十六进制存储为32 hex(varchar2(32)而不是raw(16))。只需避免不断的hextoraw / rawtohex转换,也可以更轻松地与其他应用一起使用。

无论如何,在Oracle方面,您可以尝试将其插入到原始字段中(即时转换),并捕获任何ORA-01465异常(无效的十六进制数):

insert into my_table(my_raw_field) values (hextoraw(some_hex_variable));