小编dia*_*hol的帖子

ORACLE TRIM和RTRIM:TRIM(TRAILING ...)选择多个字符?

为什么lette'm'在以下查询中扮演特殊角色?我试图创建一个TRIM函数,我坚持使用它.或者:当我从双表和另一个表查询时有什么不同.

例如

我创建了一个包含一列和两个值的表('adam'和'apperda')

create table x
(col1 varchar2(20));
insert into x values ('adam');
insert into x values ('apperda');
Run Code Online (Sandbox Code Playgroud)

然后我选择TRIM(TRAILING ...)和RTRIM如下:

select 
col1,
trim(trailing 'am' from col1) traling,
rtrim(col1, 'am') rtim
from x;
Run Code Online (Sandbox Code Playgroud)

结果是:'ad'和'apperd'

COL1                 TRALING              RTIM                
-------------------- -------------------- --------------------
adam                 ad                   ad                  
apperda              apperd               apperd              
Run Code Online (Sandbox Code Playgroud)

我不明白为什么apperd会出现结果......这应该是一条错误信息,不应该是这样的:ORA-30001:trim set应该只有一个字符?

我尝试了另外两个选择:

  1. 删除了选择的修剪(尾随...)部分.

    select
    col1,
    trim(trailing 'am' from col1) traling
    from x;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从双重选择

    select
    trim(trailing 'am' from 'apperda'),
    from dual;
    
    Run Code Online (Sandbox Code Playgroud)

这两个查询都给我错误信息:

ORA-30001:修剪集应该只有一个字符

查询中的加号行提供加信息?或者它是如何可能的?它不仅仅是一个查询问题,而且似乎两个数据(adamapperda)相互作用:

我创建一个简单的查询,apperda它显示错误:

select 
trim(trailing …
Run Code Online (Sandbox Code Playgroud)

oracle trim trailing

10
推荐指数
1
解决办法
452
查看次数

oracle ddl trigger:在删除之前创建备份表

我想用ddl触发器(在放置之前)创建一个备份表,并遇到以下问题.

发生第一次丢弃时没关系:a_backup表包含丢弃表的数据.但为什么我不能放弃另一张桌子?

ORA-01031:权限不足



create table b (x number);
Run Code Online (Sandbox Code Playgroud)

- 表B已创建.

create table a (x number);
Run Code Online (Sandbox Code Playgroud)

- 表A已创建.

create table a_backup as select * from a where 1 = 0;
Run Code Online (Sandbox Code Playgroud)

- 表A_BACKUP已创建.

create or replace trigger a_backup_tr
    before drop
    on database
begin
    IF ora_dict_obj_name <> 'A' then
    null;
    ELSIF ora_dict_obj_name = 'A'
    and ora_dict_obj_owner = 'TRANEE' then
    insert into a_backup
    select * from a;
    ELSE null;
    end if;
end;
/
Run Code Online (Sandbox Code Playgroud)

- 触发A_BACKUP_TR编译


-- 1

drop table a;
Run Code Online (Sandbox Code Playgroud)

- 表A下降.


-- 2 …
Run Code Online (Sandbox Code Playgroud)

oracle triggers plsql ddl-trigger

1
推荐指数
1
解决办法
366
查看次数

标签 统计

oracle ×2

ddl-trigger ×1

plsql ×1

trailing ×1

triggers ×1

trim ×1