这是关于oracle数据库表列
中新行和制表符的某些问题的帖子因为问题是我必须创建一个列 只取键盘符号和字母数字值,我就能得到 列中的空值但不能获取新行(ex chr(13),chr(9),chr(10),如果我也得到其中一个,则很难得到两者的组合)
我已经使用了reg_exp(喜欢和替换),还有tanslate和repalce dint找到任何合适的解决方案。
前
创建表Table1(someField varchar2(100));
插入表1的值('hi'|| CHR(10)||'如何r'');
插入表1的值('hello'|| CHR(13)||'&');
错误不能来,因为我们有一个值 1)插入“hi
如何“ - 成功。
2)插入“你好&” - 成功。
但只插入空格(chr(10)/ chr(13)/ chr(9)或空格或制表符)
错误必须在插入条件下面
插入someTable值(CHR(10));
插入someTable值(''|| CHR(10));
插入someTable值(' “|| CHR(10)||” “);
答案 0 :(得分:1)
一种方法是在桌面上添加check constraint;例如:
alter table table1 add constraint table1Check check (
regexp_replace(somefield, '[' || chr(10) || chr(9) ||chr(13) || ' ]', '') is not null
)
你有什么:
SQL> insert into Table1 values ( 'hi'|| CHR(10)||'how r u');
1 row created.
SQL> insert into Table1 values ( 'hello'|| CHR(13)||'&');
1 row created.
SQL> insert into Table1 values ( CHR(10));
insert into Table1 values ( CHR(10))
*
ERROR at line 1:
ORA-02290: check constraint (ALEK.TABLE1CHECK) violated
SQL> insert into Table1 values ( ' '|| CHR(10));
insert into Table1 values ( ' '|| CHR(10))
*
ERROR at line 1:
ORA-02290: check constraint (ALEK.TABLE1CHECK) violated
SQL> insert into Table1 values ( ' '|| CHR(10)||' ');
insert into Table1 values ( ' '|| CHR(10)||' ')
*
ERROR at line 1:
ORA-02290: check constraint (ALEK.TABLE1CHECK) violated
这样您将无法插入与您的条件不符的值。