#sql #oracle
Вопрос:
Мне нужно очистить текстовое значение, а затем обновить его.
В таблице tbl_input
столбец txt_input
содержит текст , который я разделил, chr(10) | chr(13)
чтобы получить все строки.
Затем я очищаю текст, удаляя ту строку, которая мне не нужна, с помощью NOT EXISTS
Но, в конце концов, как я могу обновить tbl_input(txt_input)
текстовое значение, которое я очищаю ? Мне нужно объединить каждую строку с chr(10) | chr(13)
.
WITH cte (txt) AS
(
SELECT txt_input txt
FROM tbl_input
WHERE id_input = 177364564
) ,
cte_remove (t) AS (
SELECT 'remove test' from dual
)
SELECT txt_value
FROM (SELECT trim(replace(replace(txt, chr(10), ''), chr(13), '')) txt
FROM (SELECT REGEXP_SUBSTR(txt, '^.*
Для примера :
Стол tbl_input
:
id_input = 1
txt_input = aaaa
bbb
ccc
ddd
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
aaaa
bbb
ddd
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
WITH cte (txt) AS
(
SELECT 'aaaa'||chr(10)||chr(13)||'bbb'
||chr(10)||chr(13)||'ccc'
||chr(10)||chr(13)||'ddd' txt_value
FROM dual
) ,
cte_remove (t) AS (
SELECT 'ccc' from dual
)
SELECT listagg(txt,chr(10)||chr(13)) within group (order by lv) res
FROM (SELECT trim(replace(replace(txt, chr(10), ''), chr(13), '')) txt, lv
FROM (SELECT REGEXP_SUBSTR(txt, '^.*
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
UPDATE tbl_input
SET txt_input = REGEXP_REPLACE(
txt_input,
'(^|'||CHR(13)||CHR(10)||')remove test($|'||CHR(13)||CHR(10)||')',
'1',
1,
0,
'ni'
)
WHERE id_input = 177364564
Который, для выборочных данных:
CREATE TABLE tbl_input ( id_input INT, txt_input VARCHAR2(200) );
INSERT INTO tbl_input ( id_input, txt_input )
SELECT 177364564,
'aaa'||CHR(13)||CHR(10)
||'bbb'||CHR(13)||CHR(10)
||'ccc'||CHR(13)||CHR(10)
||'remove test'||CHR(13)||CHR(10)
||'ddd'
FROM DUAL;
Затем, после обновления:
SELECT * FROM tbl_input;
Выходы:
|ID_INPUT |TXT_INPUT| |---------|---------| |177364564|aaa | | |bbb | | |ccc | | |ddd |
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
UPDATE tbl_input t
SET txt_input = (
WITH cte_remove (t) AS (
SELECT 'CCc' from dual
)
SELECT listagg(txt, chr(13)||chr(10)) newval
FROM (SELECT t, trim(replace(replace(txt, chr(10), ''), chr(13), '')) txt
FROM (SELECT t, REGEXP_SUBSTR(txt_input, '^.*
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
UPDATE tbl_input t
SET txt_input = (
WITH cte_remove (t) AS (
SELECT 'CCc' from dual union all
SELECT 'bBb' from dual
)
SELECT listagg(txt, chr(13)||chr(10)) newval
FROM (SELECT trim(replace(replace(txt, chr(10), ''), chr(13), '')) txt
FROM (SELECT REGEXP_SUBSTR(txt_input, '^.*
db<>скрипка
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку "ORA-01489: результат объединения строк слишком длинный".
, 1, level, 'm') txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, '^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку "ORA-01489: результат объединения строк слишком длинный".
, 1, level, 'm') IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку "ORA-01489: результат объединения строк слишком длинный".
, 1, level, 'm') txt, level lv
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, '^.*
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку "ORA-01489: результат объединения строк слишком длинный".
, 1, level, 'm') txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, '^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку "ORA-01489: результат объединения строк слишком длинный".
, 1, level, 'm') IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку "ORA-01489: результат объединения строк слишком длинный".
, 1, level, 'm') IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
/
RES
----
aaaa
bbb
ddd
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку "ORA-01489: результат объединения строк слишком длинный".
, 1, level, 'm') txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, '^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку "ORA-01489: результат объединения строк слишком длинный".
, 1, level, 'm') IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM (SELECT txt_input, lower(cte_remove.t) t
FROM cte_remove)
CONNECT BY REGEXP_SUBSTR(txt_input, ‘^.*Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt, level lv
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
/
RES
—-
aaaa
bbb
ddd
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
)
)
WHERE lower(txt) != t
)
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt, level lv
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
/
RES
—-
aaaa
bbb
ddd
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM (SELECT txt_input FROM DUAL)
CONNECT BY REGEXP_SUBSTR(txt_input, ‘^.*db<>скрипка
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt, level lv
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
/
RES
—-
aaaa
bbb
ddd
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM (SELECT txt_input, lower(cte_remove.t) t
FROM cte_remove)
CONNECT BY REGEXP_SUBSTR(txt_input, ‘^.*Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt, level lv
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
/
RES
—-
aaaa
bbb
ddd
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
)
)
WHERE lower(txt) != t
)
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt, level lv
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
/
RES
—-
aaaa
bbb
ddd
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
);db<>скрипка
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt, level lv
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
/
RES
—-
aaaa
bbb
ddd
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM (SELECT txt_input, lower(cte_remove.t) t
FROM cte_remove)
CONNECT BY REGEXP_SUBSTR(txt_input, ‘^.*Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt, level lv
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
/
RES
—-
aaaa
bbb
ddd
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
)
)
WHERE lower(txt) != t
)
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt, level lv
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
/
RES
—-
aaaa
bbb
ddd
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) txt
FROM cte
CONNECT BY REGEXP_SUBSTR(txt, ‘^.*Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».
, 1, level, ‘m’) IS NOT NULL
) sr
) sr2
WHERE NOT EXISTS (
SELECT 1
FROM cte_remove r
WHERE lower(r.t) = lower(sr2.txt))
Для примера :
Стол tbl_input
:
Если я добавлю ccc в cte_remove
, после обновления я хотел бы получить значение ниже в моей txt_input
колонке для моего текущего идентификатора :
Комментарии:
1. Примеры данных и желаемые результаты действительно прояснили бы то, о чем вы просите.
2. Я добавил примеры данных
Ответ №1:
Вот способ сделать это, адаптируйтесь к вашей исходной таблице, и я включаю выбор, перепишите ее для обновления (я не пытался оптимизировать ее).:
Ответ №2:
Если текст, который вы хотите удалить, не содержит символов со специальным значением в регулярных выражениях, вы можете просто использовать:
Который, для выборочных данных:
Затем, после обновления:
Выходы:
бд<>скрипка <>здесь
Ответ №3:
WITH
переходит к подзапросу, выбирая новое значение
Это будет работать только для одной строки cte_remove
.
Для исключения нескольких строк используйте оригинал NOT EXISTS
.
Комментарии:
1. У меня в cte_remove около 2500 строк, при его выполнении я получил ошибку «ORA-01489: результат объединения строк слишком длинный».