ORACLE TRIM 및 RTRIM: TRAILING(트레일링…)을 두 개 이상의 문자로 선택하시겠습니까?
왜 'm'자가 쿼리를 따를 때 특별한 역할을 합니까?TRIM 기능을 생성하려고 했는데 막혔습니다.또는: 듀얼 테이블과 다른 테이블에서 쿼리할 때 차이점은 무엇입니까?
예.
1열 2개의 값('adam', 'apperda')으로 표를 만들었습니다.
create table x
(col1 varchar2(20));
insert into x values ('adam');
insert into x values ('apperda');
그런 다음 TRIM(TRAILING…)과 RTRIM을 다음과 같이 선택합니다.
select
col1,
trim(trailing 'am' from col1) traling,
rtrim(col1, 'am') rtim
from x;
그리고 결과: 'ad'와 'apperd'.
COL1 TRALING RTIM
-------------------- -------------------- --------------------
adam ad ad
apperda apperd apperd
나는 이해할 수 없습니다.apperd
결과가 나타납니다.오류 메시지여야 합니다. ORA-30001: 트림 세트는 문자가 하나만 있어야 합니까?
다른 두 가지 선택을 시도했습니다.
선택 항목에서 트림(트레일링…) 부분을 제거했습니다.
select col1, trim(trailing 'am' from col1) traling from x;
듀얼에서선택
select trim(trailing 'am' from 'apperda'), from dual;
두 쿼리 모두 오류 메시지를 표시합니다.
ORA-30001: 트림 세트에는 한 문자만 있어야 합니다.
쿼리의 더하기 행은 더하기 정보를 제공합니까?아니면 어떻게 가능할까요?그리고 그것은 단지 질문이 아니라 두 데이터처럼 보입니다 (adam
그리고.apperda
상호 작용:
간단한 쿼리를 생성합니다.apperda
오류를 표시합니다.
select
trim(trailing 'am' from 'apperda') traling,
rtrim('apperda', 'am') rtim
from dual
ORA-30001: 트림 세트에는 한 문자만 있어야 합니다.
핵심 예시(2018-07-05)
create table trims
(col varchar2(20));
insert into trims values ('dream');
select
trim(trailing 'am' from col)
rtrim(col, 'am')
from trims;
트림(트레일링...)에 두 개의 문자가 있으므로 선택 항목의 첫 번째 행에 오류 ORA-30001이 표시됩니다.그러나 스크립트는 다음과 같이 실행됩니다.
TRIM(TRAILING'AM'FROMCOL) RTRIM(COL,'AM')
-----------------------------------------------
dre dre
그리고: 트림(트레일린...)이 rtrim(...)에 따라 달라지는 것 같습니다. rtrim(...)을 지우면 오류 메시지가 그대로 나타납니다.
select
trim(trailing 'am' from col)
--rtrim(col, 'am')
from trims;
`ORA-30001: trim set should have only one character`
이것이 커널 최적화의 부작용인지 궁금합니다.효과적으로trim(trailing 'am' from col)
그리고.rtrim(col, 'am')
동일한 작업입니다.그래서 만약 우리가 그들을rtrim(col, 'am')
두번째 오라클은 신경쓰지 않습니다.trim(trailing 'am' from col)
그러나 단순히 결과를 반환합니다.rtrim()
대신.
따라서 이러한 쿼리가 잘린 결과를 반환하는 동안...
select
trim(trailing 'am' from col)
, rtrim(col, 'am')
from trims;
/
select
trim(trailing 'ax' from col)
, rtrim(col, 'ax')
from trims;
/
... 실행 헐의 순서 바꾸기ORA-30001: trim set should have only one character
:
select
rtrim(col, 'am')
, trim(trailing 'am' from col)
from trims;
/
트림에 다양한 값을 제공하는 것도 마찬가지입니다.
select
trim(trailing 'am' from col)
, rtrim(col, 'ax')
from trims;
/
이 이론의 한 가지 문제점은 Oracle이 왼쪽에서 오른쪽으로 실행되는 기능을 실행한다는 것입니다.오라클이 환자들이 병원에 입원했을때마다trim()
는 쿼리에서 가장 오른쪽에 있는 함수 호출로 Oracle이 처음 실행될 때 이의를 제기할 것으로 예상됩니다.
언급URL : https://stackoverflow.com/questions/51022664/oracle-trim-and-rtrim-the-trim-trailing-select-with-more-than-one-character
'it-source' 카테고리의 다른 글
데이터 유형 CLOB를 VARCHAR2(sql)로 변경하는 방법 (0) | 2023.09.28 |
---|---|
자바스크립트 기능에서 php를 어떻게 사용할 수 있습니까? (0) | 2023.09.28 |
중복 항목이 없는데도 MySQL 중복 항목 오류 (0) | 2023.09.28 |
SQL 데이터베이스에서 동일한 이름을 관리하는 방법은 무엇입니까? (0) | 2023.09.28 |
Maria DB에 저장된 프로시저에서 여러 행을 반환하려면 어떻게 해야 합니까? (0) | 2023.09.28 |