Oracle-DB:从 all_tab_columns.data_length 计算 CHAR 字段长度的可靠方法?
Oracle-DB: Reliable way to calculate the length of a field in CHAR from all_tab_columns.data_length?
我编写了一个非常简单的数据库访问层,可将 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';
我编写了一个非常简单的数据库访问层,可将 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';