Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jdbc ORA-01858:在需要数字的位置找到非数字字符_Jdbc - Fatal编程技术网

Jdbc ORA-01858:在需要数字的位置找到非数字字符

Jdbc ORA-01858:在需要数字的位置找到非数字字符,jdbc,Jdbc,我是oracle初学者,需要有关以下查询的帮助: select admin_id, to_date(date_created, 'DD-MM-YYYY'), name, mobile, email, (select status from status where status.status_id = admin.status_id) from admin; 这是我的桌子: SQL> desc admin Name Null? Type

我是oracle初学者,需要有关以下查询的帮助:

select admin_id, to_date(date_created, 'DD-MM-YYYY'), name, mobile, email, (select status from status where status.status_id = admin.status_id) from admin;
这是我的桌子:

SQL> desc admin
 Name                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ADMIN_ID                  NOT NULL NUMBER(5)
 STATUS_ID                 NOT NULL NUMBER(5)
 DATE_CREATED                       TIMESTAMP(6)
 STATUS_DATE                        DATE
 NAME                           VARCHAR2(45)
 MOBILE                         VARCHAR2(20)
 EMAIL                          VARCHAR2(110)

SQL> desc status
 Name                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 STATUS_ID                 NOT NULL NUMBER(5)
 STATUS                         VARCHAR2(36)
主要问题是我想根据admin.status\u id获取status.status。可以将日期作为char
to\u char(创建日期,'DD/MM/YYYY')

  • 检查
    admin\u id
    status\u id
    列中的值。确保它们是正确的数据类型

  • 您能重新安排下面的查询并检查输出吗。尽可能使用联接而不是嵌套查询来提高数据库的性能:

    select ad.admin_id, to_date(ad.date_created, 'DD-MM-YYYY'), 
           ad.name, ad.mobile, ad.email,st.status  
    from admin ad,status st 
    where ad.admin_id=st.status_id;
    
  • 下面是一个类似问题的链接:(Stackoverflow)

  • 到日期(创建日期,'DD-MM-YYYY')
    没有什么意义

    • date\u created
      是一个
      时间戳
      ,具有6位亚秒精度的十进制数字
    • to_date
      接受一个字符串。因此Oracle必须首先使用会话的
      nls\u timestamp\u格式将时间戳转换为字符串。这是发送到日期的字符串
    • 到日期
      然后尝试使用“DD-MM-YYYY”格式掩码将该字符串转换回日期
      (该日期将始终具有时间分量)。除非您的
      nls\u timestamp\u格式设置为该格式,否则转换将失败,并可能抛出您报告的错误
    如果所有这些转换都成功了,那么最终将向Java应用程序发送一个时间设置为午夜的日期。不过,作为一般规则,只需将时间戳发送回Java应用程序,让它处理如何将其转换为字符串以及需要显示时间戳的哪些组件,通常会更有意义。因此,我的默认设置是只选择
    date\u created

    如果您确实希望Oracle执行数据类型转换,并将
    日期的时间部分设置为午夜,则可以使用
    trunc
    cast
    。这避免了隐式数据类型转换,并消除了对会话的
    nls\u timestamp\u格式的依赖

    trunc( cast( date_created as date ) )
    

    谢谢,但这不是我想要的。此查询将比较两个表状态\u id,而我希望显示状态表中的管理记录+管理(外键)状态\u id
    status
    。请检查两个表的结构。我在问题中列出了主要问题,主要问题不是可以用
    to_char(创建日期,'dd/mm/yyyy')解决的问题。
    我的主要问题是根据一个表从另一个表获取状态id记录table@user230-我不太明白。你的意思是,除了你指出的特定错误之外,你发布的查询存在问题吗?如果是,有什么问题?还有其他错误吗?你没有得到你期望的结果吗?请检查我在问题中提到的主要问题好的。那么“主要问题”与你在主题中提出的错误无关?查询中的最后一列似乎是一个子查询,它将为您提供“status.status基于admin.status\u id”。通常,您会为此编写一个联接,但您编写的子查询似乎有效。你有错误吗?如果是,错误是什么?你没有得到你期望的结果吗?如果是这样,请发布一些示例数据以及该示例数据的预期输出。@JustinCave衷心感谢。你是对的,我对问题的标题和最初的问题有误解。固定的。