Oracle case на REGEXP_LIKE возвращает false вместо true

1
7

У меня есть этот запрос

Запрос выбирает записи, которые соответствуют полю VALUE=' * ', и он работает нормально, но REGEXP_LIKE возвращает 0! Я ожидал 1, а не 0! Он работает с REGEXP_LIKE(documentat2_.VALUE,'(\\ *)'), но не с REGEXP_LIKE(documentat2_.VALUE,'^(\\ *)$'), почему? В других случаях REGEXP_LIKE(documentat2_.VALUE, '^(NO)$|^(\\*)$') он работает, потому что некоторые записи имеют ЗНАЧЕНИЯ с "NO", а другие с "*". Я полагаю, в полях нет пробелов, поэтому я не могу понять, почему это так работает?

Что не так, или я не прав? Я запутался..

Спасибо

select
    documentat2_.*
    ,case
            when (
                REGEXP_LIKE(documentat2_.VALUE,'^(\\*)$')
            ) then 1
            else 0
        END AS x
from
    DOCUMENT_ATTRIBUTE_BANK documentat1_
inner join
    DOCUMENT_ATTRIBUTE documentat2_
        on documentat1_.DOCUMENT_ATTRIBUTE_ID=documentat2_.DOCUMENT_ATTRIBUTE_ID
where
    exists  (
       select
            documenten0_.DOCUMENT_ID as document_id2_8_
            FROM 
             DOCUMENT documenten0_
        where
            documenten0_.APPLICATION_CODE='xxx' AND 
        documentat1_.DOCUMENT_ID=documenten0_.DOCUMENT_ID
        and documentat1_.DOCUMENT_VERSION=documenten0_.DOCUMENT_VERSION
    )
    and documentat1_.DOCUMENT_VERSION=16
    and documentat1_.BANK_ID='xxxx'
    and documentat2_.CHECKLIST_ID=7
    and documentat2_.NAME='NEW'
    AND documentat2_.VALUE='*'
Таисия
Вопрос задан17 июня 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.