Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Использование встроенных функций для работы со строками / 14 сообщений из 14, страница 1 из 1
16.12.2021, 10:36
    #40120517
KiraBatya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование встроенных функций для работы со строками
У меня есть задание,написать функцию,которая будет выбирать столбец из таблицы,и переводить символы нижнего регистра в верхний,а верхнего в нижний.Я чес слово не имею не малейшего понятия как написать обработчик для такого запроса,прошу помочь
Код: plsql
1.
select description from products;
...
Рейтинг: 0 / 0
16.12.2021, 10:52
    #40120526
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование встроенных функций для работы со строками
KiraBatya,

translate(str, lower(str) || upper(str), upper(str) || lower(str)
...
Рейтинг: 0 / 0
16.12.2021, 11:31
    #40120550
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование встроенных функций для работы со строками
...
Рейтинг: 0 / 0
16.12.2021, 11:38
    #40120554
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование встроенных функций для работы со строками
Sayan Malakshinov
KiraBatya,

Код: plsql
1.
translate(str, lower(str) || upper(str), upper(str) || lower(str) )


Изящное решение задачи "переводить символы нижнего регистра в верхний, а верхнего в нижний"!
И не зависит от языка, на котором написана строка!
Браво!
...
Рейтинг: 0 / 0
16.12.2021, 11:52
    #40120565
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование встроенных функций для работы со строками
SQL*Plus

Браво!


если строка не слишком длинная

.....
stax
...
Рейтинг: 0 / 0
16.12.2021, 13:11
    #40120587
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование встроенных функций для работы со строками
Stax
SQL*Plus

Браво!


если строка не слишком длинная
Для любителей слишком длинных строк:
1) Использовать базу данных с MAX_STRING_SIZE = EXTENDED
2) Не придумывать для сотрудников дурацкие учебные задания :-)
...
Рейтинг: 0 / 0
16.12.2021, 13:29
    #40120599
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование встроенных функций для работы со строками
SQL*Plus

1) Использовать базу данных с MAX_STRING_SIZE = EXTENDED

и при MAX_STRING_SIZE = EXTENDED строка тоже может оказатся слишком длинной

но ето не важно, решение для KiraBatya думаю подходит на 200%

зы
после MAX_STRING_SIZE = EXTENDED момент интересный
сколько ж "фич" вылезет

.....
stax
...
Рейтинг: 0 / 0
16.12.2021, 13:41
    #40120607
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование встроенных функций для работы со строками
SQL*Plus
Для любителей слишком длинных строк:

Обходится очень просто:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
      translate( substr(str,1,2000)
                , lower(substr(str,1,2000)) || upper(substr(str,1,2000))
                , upper(substr(str,1,2000)) || lower(substr(str,1,2000)))
     ||translate( substr(str,2001)
                , lower(substr(str,2001)) || upper(substr(str,2001))
                , upper(substr(str,2001)) || lower(substr(str,2001))
                ) 


Если надо extended - можно либо скорректировать константу, либо
Код: plsql
1.
2.
3.
4.
5.
6.
7.
      translate( substr(str,1,ceil(length(str)/2))
                , lower(substr(str,1,ceil(length(str)/2))) || upper(substr(str,1,ceil(length(str)/2)))
                , upper(substr(str,1,ceil(length(str)/2))) || lower(substr(str,1,ceil(length(str)/2))))
     ||translate( substr(str,ceil(length(str)/2+1))
                , lower(substr(str,ceil(length(str)/2+1))) || upper(substr(str,ceil(length(str)/2+1)))
                , upper(substr(str,ceil(length(str)/2+1))) || lower(substr(str,ceil(length(str)/2+1)))
                ) 
...
Рейтинг: 0 / 0
16.12.2021, 13:47
    #40120612
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование встроенных функций для работы со строками
andrey_anonymous
SQL*Plus
Для любителей слишком длинных строк:

Обходится очень просто:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
      translate( substr(str,1,2000)
                , lower(substr(str,1,2000)) || upper(substr(str,1,2000))
                , upper(substr(str,1,2000)) || lower(substr(str,1,2000)))
     ||translate( substr(str,2001)
                , lower(substr(str,2001)) || upper(substr(str,2001))
                , upper(substr(str,2001)) || lower(substr(str,2001))
                ) 



А если буква "Ё" или "А с умлаутом" начинают встречаться только с 2001-го символа строки?
Или в первых 2000 символах содержится оригинальный английский текст, а, начиная с 2001-го, его перевод на русский?
:-)
...
Рейтинг: 0 / 0
16.12.2021, 13:55
    #40120619
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование встроенных функций для работы со строками
andrey_anonymous
SQL*Plus
Для любителей слишком длинных строк:

Обходится очень просто:

не вопрос
я о работало годами, а тут вдрух ORA-01489

.....
stax
...
Рейтинг: 0 / 0
16.12.2021, 13:59
    #40120623
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование встроенных функций для работы со строками
SQL*Plus

А если буква "Ё" или "А с умлаутом" начинают встречаться только с 2001-го символа строки?
Или в первых 2000 символах содержится оригинальный английский текст, а, начиная с 2001-го, его перевод на русский?
:-)


не понял
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
SQL> ed
Wrote file afiedt.buf

  1  with t as (select rpad('a',2000)||'Ёёaaa123A_AA456' str from dual)
  2  select substr(
  3  translate( substr(str,1,2000)
  4                  , lower(substr(str,1,2000)) || upper(substr(str,1,2000))
  5                  , upper(substr(str,1,2000)) || lower(substr(str,1,2000)))
  6       ||translate( substr(str,2001)
  7                  , lower(substr(str,2001)) || upper(substr(str,2001))
  8                  , upper(substr(str,2001)) || lower(substr(str,2001))
  9                  )
 10* ,2001) t from t
SQL> /

T
---------------
ёЁAAA123a_aa456



....
stax
...
Рейтинг: 0 / 0
16.12.2021, 14:09
    #40120625
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование встроенных функций для работы со строками
Stax
SQL*Plus

А если буква "Ё" или "А с умлаутом" начинают встречаться только с 2001-го символа строки?
Или в первых 2000 символах содержится оригинальный английский текст, а, начиная с 2001-го, его перевод на русский?
:-)


не понял
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SQL> 
  1  with t as (select rpad('a',2000)||'Ёёaaa123A_AA456' str from dual)
  2  select substr(
  3  translate( substr(str,1,2000)
  4                  , lower(substr(str,1,2000)) || upper(substr(str,1,2000))
  5                  , upper(substr(str,1,2000)) || lower(substr(str,1,2000)))
  6       ||translate( substr(str,2001)
  7                  , lower(substr(str,2001)) || upper(substr(str,2001))
  8                  , upper(substr(str,2001)) || lower(substr(str,2001))
  9                  )
 10* ,2001) t from t
SQL> /

T
---------------
ёЁAAA123a_aa456



Да, вы правы.

А я не досмотрел и имел в виду вариант:
Код: plsql
1.
2.
3.
4.
SELECT translate(str
               , lower(substr(str,1,2000)) || upper(substr(str,1,2000))
               , upper(substr(str,1,2000)) || lower(substr(str,1,2000)) ) 
FROM t;
...
Рейтинг: 0 / 0
23.12.2021, 02:14
    #40122335
KiraBatya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование встроенных функций для работы со строками
SQL*Plus,

А что если в строке находятся тире?
...
Рейтинг: 0 / 0
23.12.2021, 09:43
    #40122350
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование встроенных функций для работы со строками
KiraBatya
SQL*Plus,

А что если в строке находятся тире?
Тогда они превратятся в тире! :-)
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Использование встроенных функций для работы со строками / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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