select CASE
WHEN ComExgRateDetailLog.NotificationMinute = '*'
THEN
1
ELSE
IF(FIND_IN_SET(
CAST(
DATE_FORMAT(
DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:00'),
'%i') AS SIGNED),
ComExgRateDetailLog.NotificationMinute) > 0,
1,
0)
END
From ComExgRateDetailLog
I want same result in oracle. What is alternative option of find_in set in oracle?
Here ComExgRateDetailLog.NotificationMinute
contains value like '0,15,30,45' So query should be like
select CASE
WHEN ComExgRateDetailLog.NotificationMinute = '*'
THEN
1
ELSE
IF(FIND_IN_SET(
CAST(
DATE_FORMAT(
DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:00'),
'%i') AS SIGNED),
'0,15,20,45') > 0,
1,
0)
END
From ComExgRateDetailLog
select FIND_IN_SET('15', '0,15,20,45') from dual would return 2
In order to achieve this in oracle use the INSTR function, but INSTR is not exactly the same as FIND_IN_SET. INSTR considers a comma, space, anything inside a string as a character.
SELECT INSTR ('0,15,20,45', '15',1,1) FROM dual would return 3
You can read about INSTR here.