У меня есть этот запрос
Запрос выбирает записи, которые соответствуют полю 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 г.