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



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

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

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

最新更新