[英]ORA-01858: a non-numeric character was found where a numeric was expected?
[英]ORA-01858: a non-numeric character was found where a numeric was expected
我是 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_id 獲取 status.status。 日期可以通過將其用作 char to_char(date_created,'DD/MM/YYYY')
來固定
to_date(date_created, 'DD-MM-YYYY')
沒有多大意義。
date_created
是具有亞秒精度的 6 位十進制數字的timestamp
。to_date
接受一個字符串。 所以 Oracle 必須首先使用會話的nls_timestamp_format
將時間戳轉換為字符串。 那是發送到to_date
的字符串。to_date
然后嘗試使用“DD-MM-YYYY”格式掩碼將該字符串轉換回date
(始終具有時間組件)。 除非這恰好是您的nls_timestamp_format
設置的內容,否則該轉換將失敗並且可能會拋出您報告的錯誤。 如果所有這些轉換都有效,您最終會向 Java 應用程序發送一個將時間設置為午夜的日期。 但是,作為一般規則,通常將時間戳發送回 Java 應用程序並讓它處理如何將其轉換為字符串以及需要顯示時間戳的哪些組件會更有意義。 所以我的默認設置是 select date_created
。
如果您確實希望 Oracle 進行數據類型轉換並將date
的時間部分設置為午夜,則可以使用trunc
和cast
代替。 這避免了隱式數據類型轉換並消除了對會話的nls_timestamp_format
的依賴。
trunc( cast( date_created as date ) )
檢查admin_id
和status_id
列中的值。 確保它們是正確的數據類型。
您能否重新排列下面的查詢並檢查 output。 盡量使用連接而不是嵌套查詢來提高數據庫的性能:
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;
以下是類似問題的鏈接: Getting Error - ORA-01858: a non-numeric character was found where a numeric is expected (Stackoverflow)
ORA-01858: a non-numeric character was found where a numeric was expected
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.