oracle中如何将long型的数据转换为char型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle中如何将long型的数据转换为char型相关的知识,希望对你有一定的参考价值。

oracle中的long类型即clob类型,可用to_char函数转换成char类型。
使用中注意事项:
1、实际上处理CLOB字段的时候,直接TO_CHAR,当长度超过4000的时候,会报错,提示列被截取;
2、直接使用SUBSTR对CLOB字段进行截取,是不能起到任何作用的;
3、可以使用dbms_lob.substr(clobcolumn,4000),对CLOB字段进行截取;截取的长度是4000还是2000根据存储的是汉字和数据决定长度。
参考技术A LONG类型列不能用大部分SQL函数。建议ORACLE别用LONG转换可以INSERT 方法:含有LONG的表table_with_long需要创建个有CHAR的表:table_with_varcharbeginfor cv in ( select col_long from table_with_long)loopif instr(cv.col_long,'key_word') > 0 then本回答被提问者采纳

如何将 unsigned long long int 转换为 unsigned char*?

【中文标题】如何将 unsigned long long int 转换为 unsigned char*?【英文标题】:How to convert unsigned long long int into unsigned char*? 【发布时间】:2021-03-13 03:11:08 【问题描述】:

比如说我有这个unsigned long long int

unsigned long long int test_int = 0xcfffedefcfffeded; // 14987959699154922989

如何将test_int 转换为以下unsigned char* 数组:

unsigned char test_char[] = "\xcf\xff\xed\xef\xcf\xff\xed\xed";

与我问的这个问题类似: How to convert unsigned char* to unsigned long long int? 唯一的例外是反向。

【问题讨论】:

你试过什么?你做了什么研究?这个问题真的有必要吗?最后一个问题不是提示你怎么做吗?我什至链接了一个实现该转换的库 - 你研究过它吗?看看***.com/questions/3784263/…。 我只是在得知您的示例有效后才看了一下,我会重新阅读它。 请原谅我,但是@github.com/biiont/gpsd/blob/master/bits.h#L45 上的哪一行? 注意:"\xcf\xff\xed\xef\xcf\xff\xed\xed"9char 数组。 【参考方案1】:

带位移的内联转换(endian-indpendent)

char test_char[8];
test_char[0] = (char)(unsigned char)(test_int >> 56);
test_char[1] = (char)(unsigned char)(test_int >> 48);
test_char[2] = (char)(unsigned char)(test_int >> 40);
test_char[3] = (char)(unsigned char)(test_int >> 32);
test_char[4] = (char)(unsigned char)(test_int >> 24);
test_char[5] = (char)(unsigned char)(test_int >> 16);
test_char[6] = (char)(unsigned char)(test_int >> 8);
test_char[7] = (char)(unsigned char)(test_int);

奖励:我们不需要谈论对齐或字节序。这很有效。

正如 cmets 中所指出的,问题中的test_char 有一个尾随空终止符,我们也可以通过设置char test_char[9];test_char[8] = 0; 来做到这一点;然而,当这个问题在实践中出现时,真实的例子很少有终止的空值,也没有意义,因为中间有空值。

评论:我希望有一个标准的htonq,但没有。

【讨论】:

无论其值如何,这对任何unsigned char* 都有效吗? @mehmed_ali343:是的。 如何使用 7 字节 unsigned char 数组(6 + 空字节)来做到这一点。 @mehmed_ali343:你不能。 sizeof(unsigned long long) == 8

以上是关于oracle中如何将long型的数据转换为char型的主要内容,如果未能解决你的问题,请参考以下文章

matlab 中如何将double 型转换为 char

ARDUINO 中将一个unsigned char 的数组的数据转化为一个long 型的数

如何将 unsigned long long int 转换为 unsigned char*?

Java数据类型自动转换的优先顺序

如何将 unsigned char* 转换为 unsigned long long int?

oracle怎么把数字转换为字符串