【问题标题】:Oracle - Select statement throwing an errorOracle - 选择语句引发错误
【发布时间】:2019-04-22 06:44:44
【问题描述】:

请查看此链接。

你可以看到错误信息:

注意:我故意将roll_no 保留为字符类型。 我需要有关 select 语句的帮助。

谢谢

【问题讨论】:

  • Oracle不是mysql,请不要玩标签垃圾邮件。并且请将代码作为文本发布,因为这就是现实。我们不想看单独的图片。谢谢
  • 无论如何,"Unknown" 和 "" 似乎很明显不能转换为数字,所以我不知道为什么你会期望 TO_NUMBER 与它们一起使用。你想象的结果会是什么?在您看来,“未知”应该转换成什么数字?
  • 我有一个数据库被搞砸了。我没有写权限。我也有类似的情况,我有一个应该在 int 中的列,但最终在弓箭手
  • 然后呢?你想说什么?您仍然无法将任意文本转换为数字。你到底想达到什么目的?
  • 我有什么办法可以对该列进行强制转换并仅获取其中的数字。我只需要该列中的数字。

标签: mysql sql oracle select


【解决方案1】:

并非所有行都会转换为数字。 Unknown 和空字符串导致错误。

【讨论】:

  • 我需要从 roll_no 列中提取数字值。有什么办法吗?而且我没有这个数据库的写权限
  • 但是你有 Roll_No 不是数字的行。你想如何处理这些?如果您想忽略它们,请在您的 SELECT 中添加 WHERE 子句,例如WHERE Is_Numeric(Roll_No) = 1
  • 我试过这个。它说 ORA-00904: "IS_NUMERIC": invalid identifier.
  • 创建学生表(roll_no varchar(10));插入学生值('10');插入学生值('UnKnown');插入学生值(''); select to_number(roll_no) from student where Is_Numeric(Roll_No) = 1;
  • 我认为您还需要明确排除空值,WHERE Roll_No IS NOT NULL AND Is_Numeric(Roll_No) = 1,我是 SQL Server 人员,不确定 IS NOT NULL 是否有效 P-SQL
【解决方案2】:

如果您想要某个值,并非所有内容都会像您的情况一样转换为空字符串。将其以与To_Number('0')类似的格式放在字符串中

【讨论】:

    【解决方案3】:

    这对我有用

    select to_number(roll_no) from student
    WHERE REGEXP_LIKE(roll_no, '^[[:digit:]]+$');
    

    谢谢大家

    【讨论】:

    • 呃,我个人讨厌 reg exp 但很高兴你能够继续前进。
    猜你喜欢
    • 2021-02-19
    • 2015-01-28
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多