select *
from tableA t
where exists
(
select 1
from xmltable
(
'for $id in tokenize($s, ",") return <i>{normalize-space ($id)}</i>'
passing IN_DATE as "s"
columns
tok char(10) path '.'
) v
where date (to_date (v.tok, 'YYYY-MM-DD')) between t.date1 and t.date2
)
3条答案
按热度按时间gstyhher1#
您的问题的解决方案
qq24tv8q2#
你想做的事根本不可能。
between子句的语法为:
...表达式1介于表达式2与表达式3之间...
每个表达式必须解析为单个值(而不是值列表)。此外,expression2必须〈expression3,否则结果未定义。其中expressionN是列名,则单个值是当前正在计算的行中的值。
这表明您可能没有正确处理此问题。请提供一些示例数据和预期结果。这将使您更好地了解您正在尝试做什么。描述您希望实现的目标也会有所帮助,而不是描述您如何尝试实现目标。
dgenwo3n3#
您可以使用如下所示的字符串标记化方法,其中
IN_DATE
字符串参数具有以YYYY-MM-DD
形式的逗号分隔的日期列表。