甲骨文 10g 数据库。我有一张桌子叫s_contact
. 该表有一个名为 的字段person_uid
。此person_uid
字段是 varchar2,但包含某些行的有效数字和其他行的无效数字。例如,一行可能有一个person_uid
“2-lkjsdf”,另一行可能是 1234567890。
我想只返回 person_uid 中具有有效数字的行。我正在尝试的 SQL 是...
select person_uid
from s_contact
where decode(trim(translate(person_uid, '1234567890', ' ')), null, 'n', 'c') = 'n'
翻译用空格替换所有数字,因此如果字段仅包含数字,则修剪将导致 null。然后我使用 decode 语句设置一些代码进行过滤。n=数字,c=字符。
当我只运行预览时,这似乎有效,但是当我添加过滤器时出现“无效号码”错误......
and person_uid = 100
-- or
and to_number(person_uid) = 100
我只是不明白发生了什么!它应该过滤掉所有无效数字的记录,而 100 显然是一个数字......
有什么想法吗?非常感激!