您无法在表中搜索列名,如果您的架构经常更改,则必须查看数据字典并使用动态 SQL。
你可以 ...
select table_name,
column_name
from all_tab_columns
where owner = ? -- insert name of table owner
and upper(column_name) like 'D\_%' escape '\'
在搜索中使用 D 的 ASCII 值没有任何好处——它只会混淆代码。LIKE 和 ESCAPE 是正确的方法。
顺便说一句,在 Oracle 中使用大小写混合的对象名称被认为是一种不好的做法。
编辑:当然,如果您真的想通过 ASCII 字符搜索字符串,那么您可以执行以下操作:
where ascii(substr('D_123',1,1))=68 and
ascii(substr('D_123',2,1))=95
或者
where ascii(substr('D_123',1,1))||ascii(substr('D_123',2,1))='6895'
或者
where substr(dump(substr('D_123',1,2)),-6) = ' 68,95'
与以往一样,有很多方法以错误的方式做事。