【发布时间】:2018-06-25 08:04:59
【问题描述】:
我有这个问题
SELECT text
FROM book
WHERE lyrics IS NULL
AND MOD(TO_NUMBER(SUBSTR(text,18,16)),5) = 1
有时字符串类似于$OK$OK$OK$OK$OK$OK$OK,有时类似于@P,351811040302663;E,101;D,07112018134733,07012018144712;G,4908611,50930248,207,990;M,79379;S,0;IO,3,0,0
如果我想知道是否可以防止 ORA-01722: invalid number,因为某些原因导致该位置的字符不是数字。 我在一个过程中运行此查询,处理游标中的所有行,如果 1 行不是数字,我无法处理任何行
【问题讨论】:
-
为什么将重要的数字存储为字符串的一部分?
-
请显示示例字符串
-
查看引用帖子中的所有答案。
-
@jarlh - 有时这不是发布者(甚至整个数据库行业)的选择(错误)。以 VIN(车辆识别号)为例。一张表可以存储汽车租赁业务中汽车的 VIN。这是一个长的单字符串。它的不同部分(一些字母字符,一些数字)编码不同的东西。 DB 必须存储 VIN。即使想要提取不同的位并将它们分开存储,他们仍然需要像 OP 那样做一些事情。对吗?
-
@timbiegeleisen - 对于那些以完全重复的方式结束问题的人:不是。您指出的问题询问如何找到非数字的值。在这个线程中,OP 询问如何防止 ORA-01722。这是一个不同的问题,即使它们是相关的。如果您想将其作为重复项关闭,请找到一个确切的。