Database 如何在sql中查看存储的字符ascii值
我试图查看内存中存储的字符ASCII值,但它只显示第一个字符ASCII。我想完成存储在内存中的字符结构 前冒名char10 我要通过abc考试 因此,它应该显示int数组,如下所示 67 68 69 32 32 32 此处32 for Space一种方法是转储字符串,然后从输出中获取字节码列表:Database 如何在sql中查看存储的字符ascii值,database,oracle,Database,Oracle,我试图查看内存中存储的字符ASCII值,但它只显示第一个字符ASCII。我想完成存储在内存中的字符结构 前冒名char10 我要通过abc考试 因此,它应该显示int数组,如下所示 67 68 69 32 32 32 此处32 for Space一种方法是转储字符串,然后从输出中获取字节码列表: SELECT SUBSTR(REGEXP_SUBSTR(DUMP('a b c d'), ':.*'), 3) FROM DUAL; 在你的情况下,你会想做 SELECT SUBSTR(REGEXP_
SELECT SUBSTR(REGEXP_SUBSTR(DUMP('a b c d'), ':.*'), 3) FROM DUAL;
在你的情况下,你会想做
SELECT SUBSTR(REGEXP_SUBSTR(DUMP(YOUR_COLUMN_NAME), ':.*'), 3)
FROM YOUR_TABLE
祝您好运。如果您只想查看存储的字节,请使用dump,如果您愿意,dump将以十进制、十六进制甚至八进制显示。Bob从输出中提取字节的方法很有用,如果这很重要,您可以选择用空格替换逗号 如果确实想查看十六进制值,还可以执行以下操作:
select name,
cast(utl_raw.cast_to_raw(name) as varchar2(20)) as ascii
from your_table;
NAME ASCII
---------- ------------------------------
abc 61626320202020202020
作为获取十进制值的替代方法,您可以使用分层查询:
select name,
listagg(ascii(substr(name, level, 1)), ' ') within group (order by level) as ascii
from your_table
connect by level <= length(name)
group by name;
NAME ASCII
---------- ------------------------------
abc 97 98 99 32 32 32 32 32 32 32
它不是真正的ASCII,除非您的字符集是US7ASCII;它是数据库字符集中的十进制表示形式。。。但这种区别通常被忽视。不过,对于非ASCII字符,这些值都将大于127。欢迎使用StackOverflow。请编辑您的问题,以显示您正在使用的实际sql语句和您得到的结果。谢谢
select name,
dump(name) as dumped,
trim(regexp_replace(dump(name), '((.*:)|,)', ' ')) as ascii
from your_table;
NAME DUMPED ASCII
---------- --------------------------------------------- ------------------------------
abc Typ=96 Len=10: 97,98,99,32,32,32,32,32,32,32 97 98 99 32 32 32 32 32 32 32