删除oracle数据库表列中的新行和选项卡

时间:2016-06-09 14:14:40

标签: sql oracle plsql

这是关于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)||” “);

1 个答案:

答案 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

这样您将无法插入与您的条件不符的值。