C# 检查字符串是否为oracle原始(16)类型字段的字符串版本

C# 检查字符串是否为oracle原始(16)类型字段的字符串版本,c#,oracle,types,C#,Oracle,Types,是否可以检查C#中的字符串,它是否是oracle原始(16)类型数据的字符串版本?例如,“5D03D479127C4DB58AF69BF4D81A”是原始(16)类型数据的字符串版本 从Oracle检索原始(字节)时,需要执行以下操作: var str = System.Text.Encoding.Default.GetString(rawColumnData); 由您来确保使用正确的编码。我不确定您真正想问什么。是这样的吗 string hexstr = "5D03D47919127C4DB

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

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

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

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

我不确定您真正想问什么。是这样的吗

string hexstr = "5D03D47919127C4DBBD58AF69BF4D81A";

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

bool isAHexString = hexstr.All(allowChars.Contains) && hexstr.Length == 32;
字符串hextstr=“5D03D47919127C4DBBD58AF69BF4D81A”; var allowChars=新哈希集(“0123456789ABCDEF”); bool isAHexString=hexstr.All(allowChars.Contains)和&hexstr.Length==32;
不确定您的用例,但我更喜欢将32十六进制存储为32十六进制(varchar2(32)而不是原始(16))。只需避免恒定的hextoraw/rawtohex转换,其他应用程序也更容易使用

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


如果我没弄错的话,raw是二进制数据。您是在尝试持久化还是检索,还是两者都要?我想检查字符串是否为raw16格式。您是在询问十六进制吗?我不想将其转换为字符串。@serefbilge是否要传递字节数组?为什么?我想在检查数据库中是否存在raw(16)类型的确认代码之前检查它。通过这种方式,如果它不是真实的格式,我就不需要从数据库中检查它。是的,我很高兴被理解:)。我想在进入数据库之前检查它。这将是一个预先检查机制。
insert into my_table(my_raw_field) values (hextoraw(some_hex_variable));