Почему в следующем запросе особое значение имеет lette 'm'? Я пытался создать функции TRIM, и я застрял с этим. Или: в чем разница, когда я запрашиваю данные из двойной и другой таблицы.
* 1003 Е.Г. *
Я создал таблицу с одним столбцом и двумя значениями ('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
И еще: кажется, что триммер (trailin ...) зависит от rtrim (...) - если стереть rtrim (...), сообщение об ошибке появляется как должно быть.
select
trim(trailing 'am' from col)
--rtrim(col, 'am')
from trims;
`ORA-30001: trim set should have only one character`