Hum*_*rto 1 .net string oracle varchar
问题的简短版本:有没有办法计算VARCHAR(n)在Oracle数据库的列中存储字符串字符所需的字节数?
更长版本:以下Oracle SQL脚本将在第三个语句中失败.它会尝试在一VARCHAR(10)列中插入10个字符; 然而,其中一个角色是带有尖锐口音的A.
CREATE TABLE TESTTABLE (NAME VARCHAR(10) NULL);
INSERT INTO TESTTABLE (NAME) VALUES ('abcdefghij');
--1 rows inserted.
INSERT INTO TESTTABLE (NAME) VALUES ('ábcdefghij');
--ORA-12899: value too large for column "ACME"."TESTTABLE"."NAME" (actual: 11, maximum: 10)
Run Code Online (Sandbox Code Playgroud)
我的C#应用程序将字符串存储在Oracle数据库中,我不能只将列类型更改为NVARCHAR2(10),这将起作用.应用程序应该将任何较大的字符串修剪为10个字符的限制,因此Oracle不会抱怨它的长度.但String.Length基于a- based的修剪是一种非常天真的策略:它会盲目地将"ábcdefghij"保留为其所有10个CLR字符.
如何检测'á'将占用数据库行中的2个字节,以便在发出语句之前将字符串修剪为"ábcdefghi"INSERT?
编辑:这个问题类似于基于字节长度缩短UTF8字符串的最佳方法
| 归档时间: |
|
| 查看次数: |
453 次 |
| 最近记录: |