是否可以在 C# 中检查字符串,是否是 oracle raw(16) 类型数据的字符串版本?例如,“5D03D47919127C4DBBD58AF69BF4D81A”是原始(16)类型数据的字符串版本。
问问题
766 次
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 回答