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"
是 9 的 char
数组。
【参考方案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型的主要内容,如果未能解决你的问题,请参考以下文章
ARDUINO 中将一个unsigned char 的数组的数据转化为一个long 型的数
如何将 unsigned long long int 转换为 unsigned char*?