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