powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / lower() for multiple values?
9 сообщений из 9, страница 1 из 1
lower() for multiple values?
    #39284825
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте,
подскажите пожалуйста, есть ли какой-то более элегантный способ сделать следующее.

Делается небольшой примитивный поиск. Получаю массив строк которые нужно объединить с помощью or. Но хочу чтоб искало "case insensitive" значит мне нужно искомое слово и те в которых я ищу все привести в "lower or upper case".
Просто(в моем понимании) эта функция выглядела бы следующим образом...

Код: plsql
1.
select * from ticket  where assign IN ('FE','BR'...); 


но если в БД вместо 'FE' - 'fe' - то конечно же 'fe' не найдется.

Нашел такое решение.
Код: plsql
1.
select * from ticket  where lower(assign) IN (lower('FE')); 


Но lower принимает только один параметр, неужели мне нужно будет записывать весь sql вот так?
Код: plsql
1.
select * from ticket  where lower(assign) IN (lower('FE'),lower('BR'), lower('BR2), ..., ....); 



Подскажите более лаконичное(красивое) решение...
Благодарю.
...
Рейтинг: 0 / 0
lower() for multiple values?
    #39284829
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
alter session set nls_sort=russian_ci;
alter session set nls_comp=linguistic;
with t as (select 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя' s from dual)
   ,t2 as (select s,level n, substr(s,level,1) a
             from t
       connect by level <= length(s)
   )
select count(*)
  from t2
 where s like '%'||upper(a)||'%';


довести рашпилем (германским ,видимо ;)
...
Рейтинг: 0 / 0
lower() for multiple values?
    #39284833
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawish,
извращуга))
_webdev_
in (select lower(column_value) from sys.odcivarchar2list(.....))
...
Рейтинг: 0 / 0
lower() for multiple values?
    #39284886
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vintorawish,
извращуга))
_webdev_
in (select lower(column_value) from sys.odcivarchar2list(.....)) - хуххх, пасиб, а то я тоже глаза выпучил. )))


orawish
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
alter session set nls_sort=russian_ci;
alter session set nls_comp=linguistic;
with t as (select 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя' s from dual)
   ,t2 as (select s,level n, substr(s,level,1) a
             from t
       connect by level <= length(s)
   )
select count(*)
  from t2
 where s like '%'||upper(a)||'%';



довести рашпилем (германским ,видимо ;) - и вам спасибо. )))
...
Рейтинг: 0 / 0
lower() for multiple values?
    #39284896
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_Нашел такое решение.
Код: plsql
1.
select * from ticket  where lower(assign) IN (lower('FE')); 

Код: plsql
1.
select * from ticket  where UPPER(assign) IN ('FE'); 


Ну и регистронезависимое сравнение на уровне сессии, только чтобы все сессии пользовали одинаковые запросы единообразно.
...
Рейтинг: 0 / 0
lower() for multiple values?
    #39284991
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-_webdev_Нашел такое решение.
Код: plsql
1.
select * from ticket  where lower(assign) IN (lower('FE')); 


Код: plsql
1.
select * from ticket  where UPPER(assign) IN ('FE'); 



Ну и регистронезависимое сравнение на уровне сессии, только чтобы все сессии пользовали одинаковые запросы единообразно. - немного не понял Ваш ответ... Мне нужно чтоб искало как в нижнем так и в верхнем регистре, в не зависимости от того в каком сохранено...
...
Рейтинг: 0 / 0
lower() for multiple values?
    #39285098
dimyaz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_webdev_,

В IN() же всегда фиксированный формат, который ты руками напишешь, зачем там ожидать изменение?
Просто с одной стороны поставь upper а в IN пиши всегда большими.
...
Рейтинг: 0 / 0
lower() for multiple values?
    #39285147
kernA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_webdev_,
У вас на поле assign есть индекс? Если поле индексировано, то должен ли сохраняться поиск по индексу?
...
Рейтинг: 0 / 0
lower() for multiple values?
    #39285185
_webdev_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimyaz_webdev_,

В IN() же всегда фиксированный формат, который ты руками напишешь, зачем там ожидать изменение?
Просто с одной стороны поставь upper а в IN пиши всегда большими. - ха, действительно, эдементарно же. Не сообразил сразу. Спасибо, направили мысли на путь истинный.


-2-_webdev_Нашел такое решение.
Код: plsql
1.
select * from ticket  where lower(assign) IN (lower('FE')); 


Код: plsql
1.
select * from ticket  where UPPER(assign) IN ('FE'); 



Ну и регистронезависимое сравнение на уровне сессии, только чтобы все сессии пользовали одинаковые запросы единообразно. - Спасибо, уже понял. ))


kernA_webdev_,
У вас на поле assign есть индекс? Если поле индексировано, то должен ли сохраняться поиск по индексу? - нет, пока без индекса.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / lower() for multiple values?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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