Oracle-DB:从all_tab_columns.data_length中计算CHAR中字段长度的可靠方法吗?

时间:2018-10-19 07:47:11

标签: oracle encoding varchar2

我已经编写了一个非常简单的数据库访问层,该层将C#对象映射到数据库表并返回。它使用all_tab_columns中的信息来进行一些输入验证(主要是长度检查)。它在ISO编码的数据库上可以正常工作,但在UTF-8上会产生错误的结果。我尝试了(data_length / LENGTHB('ä')),这有时似乎有用,有时却没有。我知道这是一个肮脏的骇客,但我还没有找到一种模式。是否有一种可靠的方法可以根据data_length计算VARCHAR2字段的CHAR长度?

1 个答案:

答案 0 :(得分:0)

我自己找到了答案。 ALL_TAB_COLUMNS提供了一个CHAR_LENGTH字段,该字段包含该列中的最大字符数。示例:

SELECT column_name, char_length FROM all_tab_columns WHERE table_name = 'SOME_TABLE';