powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
27 сообщений из 27, показаны все 2 страниц
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400208
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а остальные заменить дефолтым символом ( напр "?" ) т.е хочу получить что-то типа:

select some_translate( 'ARLBC', 'AB, 'АБ', default => '?' ) from dual
--
A??B?'
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400217
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А школу-то закончил?
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400230
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnikа остальные заменить дефолтым символом ( напр "?" ) т.е хочу получить что-то типа:

Код: plsql
1.
2.
3.
select some_translate( 'ARLBC', 'AB, 'АБ', default => '?' ) from dual  
--
A??B?'



Подсказка: множество символов конечно (если не заморачиваться с иероглифами)
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400233
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вторая подсказка -- множество символов ограничено входной строкой
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400244
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sorry, конечно же:

Код: sql
1.
2.
3.
select some_translate( 'ARLBC', 'AB, 'АБ', default => '?' ) from dual  
--
A??Б?'



авторВторая подсказка -- множество символов ограничено входной строкой
Не, всё равно туплю! :-(
через "connect by level < length( aInputStr ) + 1" как то?
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400248
Такщтоли?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DBAshnik,

Код: plsql
1.
2.
3.
4.
SQL> select translate(str, 'AB'||str, 'АБ'||rpad('?', length(str), '?')) from (select 'ARLBC' str from dual);
TRANSLATE(STR,'AB'||STR,'АБ'
------------------------------
А??Б?
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400249
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такщтоли?,

ВНИМАНИЕ! СПОЙЛЕР!
Код: plsql
1.
select translate('ARLBC', 'ABCDEFGHIJKLMNOPQRSTUVWXUZ', 'AB?????????????????????????') from dual

...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400250
Такщтоли?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--Eugene--, Тымнещтоли?
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400252
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такщтоли?DBAshnik,

Код: plsql
1.
2.
3.
4.
SQL> select translate(str, 'AB'||str, 'АБ'||rpad('?', length(str), '?')) from (select 'ARLBC' str from dual);
TRANSLATE(STR,'AB'||STR,'АБ'
------------------------------
А??Б?



:-) Тот самый грусный момент, когда понимаешь, что мог бы и сам допереть! :-(
Спасибо большое! Вариант что надо!!!
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400254
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такщтоли?,

извини, нетуда попало
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400298
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBAshnik:-) Тот самый грусный момент, когда понимаешь, что мог бы и сам допереть! :-(
Спасибо большое! Вариант что надо!!!

Тогда не удивляйся если в какой-то новой верcии это вернeт совсем не то что ты ожидал. TRANSLATE гaрантирует что N-ный символ из FROM транслируется в N-ный символ из то. А вот насчет как читать FROM/TO - слева направо или справа налево зависит от версии. Посему если какой-то символ в FROM укaзан несколько раз и соответствующие символы в TO разные то рeзультат завиcит от парcера. FROM у тебя 'ABARLBC' а TO 'АБ?????', так-что если парсинг слева направо то A -> A, B -> Б а если справа налево то A -> ?, B -> ? и парcер уже менялся в прошлом - TRANSLATE - странное поведение.

SY.
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400310
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
create or replace function custom_translate(p_string varchar2, p_default varchar2, p_xz varchar2) return varchar2
is
  l_return varchar2(4000);
begin

  with
    t1(fs, rn)  as (
                select
                  substr(p_string, rownum, 1),
                  rownum
                from dual
                connect by rownum <= length(p_string)
               ),
    t2(fsv) as ( select
                  substr(tst, rownum, 1)
                from (select p_default tst from dual)
                connect by rownum <= length(p_default))
    select listagg(nvl(fsv, p_xz), '') within group (order by t1.rn) ret
    into l_return
    from t1 left join t2 on t1.fs = t2.fsv;
    
  return l_return;
end;
/



Код: plsql
1.
select custom_translate('Говнокодер-нехорошийчеловек', 'од', '?') xz from dual;



XZ?о??о?од??????о?о??????о???
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400323
ln123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем так сложно то, проще нужно быть

Код: plsql
1.
 select translate(regexp_replace( 'ARLBC', '[^A|^B]','?' ),'AB','АБ') from dual 
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400331
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ln123
Код: plsql
1.
'[^A|^B]'

Регулярусы ещё нужно уметь писать.
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400340
Такщтоли?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SYTRANSLATE гaрантирует что N-ный символ из FROM транслируется в N-ный символ из то. А вот насчет как читать FROM/TO - слева направо или справа налево зависит от версии.
С одиннадцатой закрепили в доке. Теперь все будет хорошо.
[quote Oracle Database Online Documentation 11g Release 2 (11.2)
If a character appears multiple times in from_string, then the to_string mapping corresponding to the first occurrence is used.
[/quote]
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400342
Такщтоли?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такщтоли?SYTRANSLATE гaрантирует что N-ный символ из FROM транслируется в N-ный символ из то. А вот насчет как читать FROM/TO - слева направо или справа налево зависит от версии.
С одиннадцатой закрепили в доке. Теперь все будет хорошо.
Oracle Database Online Documentation 11g Release 2 (11.2)If a character appears multiple times in from_string, then the to_string mapping corresponding to the first occurrence is used.
http://docs.oracle.com/cd/E11882_01/server.112/e41084/functions216.htm#SQLRF06145


Исправил форматирование
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400343
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicln123
Код: plsql
1.
'[^A|^B]'

Регулярусы ещё нужно уметь писать.

точно! Одной крышечки впереди, похоже, достаточно! ))

ln123 ! Всё равно пока лучший вариант! По любому спасибо!
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400349
ln123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да это я что то переборщил правильно конечно [^AB] хотя оракал и мой вариант прощает
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400361
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ln123прощаетможно и в розетку пальцы сунуть, пока электричества нет.
синтаксической ошибки нет, а что именно ты не знаешь, оракл не знает.
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400363
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ln123Да это я что то переборщил правильно конечно [^AB] хотя оракал и мой вариант прощаетОн не прощает, а тупо исполняет потенциально с другим, отличным от ожидаемого результатом.
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400377
DBAshnikВсё равно пока лучший вариант!

Друг, а где хоть один вариант от тебя?
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400380
ln123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да согласен ступил, не прощает первый вариант был совсем не правильным

Код: plsql
1.
2.
3.
select translate(regexp_replace( 'A^|RLBC', '[^A|^B]','?' ),'AB','АБ') from dual 
--
А^|??Б?



P.S. Насчет прощает, у меня были ситуации когда при переносе кода с Oracle на Postgres, регулярки (не совсем корректно написанные) которые выполнялись на Oracle не работали на Postgres
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400382
Лирик..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ln123 не прощает первый вариант был совсем не правильным

1) Он никак не мог простить первый вариант. Я был совсем неправильный.
2) Oracle никого не прощает. Первый вариант - полная лажа и совсем неправильный.
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400517
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYDBAshnik:-) Тот самый грусный момент, когда понимаешь, что мог бы и сам допереть! :-(
Спасибо большое! Вариант что надо!!!

Тогда не удивляйся если в какой-то новой верcии это вернeт совсем не то что ты ожидал. TRANSLATE гaрантирует что N-ный символ из FROM транслируется в N-ный символ из то. А вот насчет как читать FROM/TO - слева направо или справа налево зависит от версии. Посему если какой-то символ в FROM укaзан несколько раз и соответствующие символы в TO разные то рeзультат завиcит от парcера. FROM у тебя 'ABARLBC' а TO 'АБ?????', так-что если парсинг слева направо то A -> A, B -> Б а если справа налево то A -> ?, B -> ? и парcер уже менялся в прошлом - TRANSLATE - странное поведение.

SY.Такщтоли?DBAshnik,

Код: plsql
1.
2.
3.
4.
SQL> select translate(str, 'AB'||str, 'АБ'||rpad('?', length(str), '?')) from (select 'ARLBC' str from dual);
TRANSLATE(STR,'AB'||STR,'АБ'
------------------------------
А??Б?

Да
Просто добавить еще translate
Код: plsql
1.
2.
3.
4.
5.
6.
tst> select translate(str, 'AB'||translate(str, 'AB', rpad('?', length('AB'), '?')),
  2                        'АБ'||rpad('?', length(str), '?')) from (select 'ARLBC' str from dual);

TRANS
-----
А??Б?
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39400724
DBAshnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странный код Друг, а где хоть один вариант от тебя?
в светлом будущем, я надеюсь! )))
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39401106
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровПросто добавить еще translate

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select  translate(
                  str,
                  'AB' || translate(str,'XAB','X'),
                  'АБ' || rpad('?',length(str),'?')
                 )
  from  (
         select  'ARLBC' str
           from  dual
        )
/
...
Рейтинг: 0 / 0
чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
    #39401336
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А то и вобще replace(str, 'AB') ;-)
...
Рейтинг: 0 / 0
27 сообщений из 27, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / чё-то сам не допираю: как заменить определённые символы строки А ОСТАЛЬНЫЕ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]