-1

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

4

3 回答 3

0

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

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

您可以确保使用正确的编码。

于 2013-05-13T14:42:31.200 回答
0

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

string hexstr = "5D03D47919127C4DBBD58AF69BF4D81A";

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

bool isAHexString = hexstr.All(allowChars.Contains) && hexstr.Length == 32;
于 2013-05-13T15:28:14.770 回答
0

不确定您的用例,但我更喜欢将 32 hex 存储为 32 hex(varchar2(32) 而不是 raw(16))。只是避免了不断的 hextoraw/rawtohex 转换,并且其他应用程序也更容易使用。

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

insert into my_table(my_raw_field) values (hextoraw(some_hex_variable));
于 2013-05-13T15:40:25.343 回答