我在查询中遇到问题。
我有一个名为“store”的表,我需要查询。
pod repo push --sources=https://your.private.repo/PodSpecs MFPods ~/Desktop/MFReusable/BlinkingLabel/BlinkingLabel.podspec
这应该可以,但是由于我在列中有“字符( - )”并且这被定义为数字,该查询引发异常:ORA-01722:无效的数字。 所以我想在查询中做这样的事情:
Select s.store_name
from store s
where s.store = case
when p_store != 0 then
p_store
else
s.store
end;
有可能吗? 谢谢!
编辑: 我上面写的查询是我运行的查询的一个例子。 引发异常的原因是另一列(PC前面的时间过多:-()。 这个表有一个varchar2(15)的列,我正在这样做: (...)AND S.CODE> 4(...) 我想要做的正确条件是: (...)AND LENGTH(S.CODE)> 4 谢谢大家!
答案 0 :(得分:0)
据我所知,你有varchar2 s.store
实际上包含数字,所以Oracle试图将它转换为数字,但在某些时候它会得到-
并抛出异常。您应该做的是更新-
替换null
的表格。但是,如果您不想这样做,您可以尝试将案例返回varchar2
Select s.store_name
from store s
where s.store = case
when to_char(p_store) != '0' then
to_char(p_store)
else
s.store
end;
答案 1 :(得分:0)
我猜你是在plsql块中运行查询(作为游标?)。在那种情况下,动态sql是要走的路。查看REF CURSOR(谷歌!)。