Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 SQL and comparison strings don't ignore case  [new]
Jafa
Member

Откуда:
Сообщений: 120
Всем привет,
объясните мне, почему при сравнении один запрос учитывает регистр строк, а другой нет? Почему Пример 1 считает кол. без UPPER, а в Примере 3 нужно использовать UPPER? Странно что Пример 4 анологичен Примеру 1, но без UPPER(owner) не видит строк

Пример 1, к условию component_id = 'rdbms' подходит 9055 строк:
SELECT COUNT(*)
FROM v$diag_alert_ext
WHERE component_id = 'rdbms'
AND message_text LIKE '%R%';
/*
  COUNT(*)
----------
      9055
*/


Пример 2, в этой же БД к условию component_id = 'rdbms' подходит 0 строк:
SELECT COUNT(*)
FROM v$diag_alert_ext
WHERE component_id = 'rdbms';
/*
  COUNT(*)
----------
         0
*/


Пример 3, к условие UPPER(component_id) = UPPER('rdbms') подходит 9055
SELECT COUNT(*)
FROM v$diag_alert_ext
WHERE UPPER(component_id) = UPPER('rdbms');
/*
  COUNT(*)
----------
     11397
*/


Пример 4
SELECT COUNT(*)
FROM all_objects a
WHERE a.owner = 'sys'
AND a.object_name LIKE '%R%';
/*
  COUNT(*)
----------
         0
*/
29 сен 17, 20:47    [20832559]     Ответить | Цитировать Сообщить модератору
 Re: SQL and comparison strings don't ignore case  [new]
xtender
Member

Откуда: Мск
Сообщений: 4678
Jafa,

v$diag_alert_ext - косячная сама по себе(там кривая x$-функция ) я зачастую просто материализую всё из неё и только потом фильтрую
29 сен 17, 21:45    [20832644]     Ответить | Цитировать Сообщить модератору
 Re: SQL and comparison strings don't ignore case  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 879
Не вижу ваш v$...

А в ALL_OBJECTS

a.owner = 'SYS'


есть результат.

a.owner = 'sys'


нет результата (0).
29 сен 17, 21:46    [20832646]     Ответить | Цитировать Сообщить модератору
 Re: SQL and comparison strings don't ignore case  [new]
Jafa
Member

Откуда:
Сообщений: 120
xtender
Jafa,

v$diag_alert_ext - косячная сама по себе(там кривая x$-функция ) я зачастую просто материализую всё из неё и только потом фильтрую

я уже тоже об этом подумал, наверное эта въюха не официальная (не задокументированная).
Или как тут говорится - "The v$diag_alert_ext table is under-documented in Oracle and there are no notes about v$diag_alert_ext on MOSC."
29 сен 17, 22:01    [20832671]     Ответить | Цитировать Сообщить модератору
 Re: SQL and comparison strings don't ignore case  [new]
Jafa
Member

Откуда:
Сообщений: 120
dmdmdm,
v$diag_alert_ext лежит в SYS
на Пример 4 можете особо внимание не тратить, он как аналог Примера 1 и показывает что есть разница 'SYS' и 'sys'
29 сен 17, 22:08    [20832683]     Ответить | Цитировать Сообщить модератору
 Re: SQL and comparison strings don't ignore case  [new]
xtender
Member

Откуда: Мск
Сообщений: 4678
Jafa,

Я немножко поленился просто описать ее косяк: эта вьюха работает нормально, если нет предикатов, но когда добавляешь какой-нибудь предикат, который использует fixed table fixed index с еще предикатами, то все ломается
29 сен 17, 22:59    [20832751]     Ответить | Цитировать Сообщить модератору
 Re: SQL and comparison strings don't ignore case  [new]
xtender
Member

Откуда: Мск
Сообщений: 4678
Jafa,

https://docs.oracle.com/database/122/REFRN/V-DIAG_ALERT_EXT.htm
30 сен 17, 00:24    [20832921]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить