真是要被oracle搞死了,總是遇到古怪的問題
SQL陳述句如下,BIRTHDAY是日期型別,yyyy-MM-dd
這句是可以運行的,不會報錯:
SELECT TO_NUMBER(SUBSTR(TO_CHAR(BIRTHDAY),0,4)) FROM BO_HT_EM_BASIC_INFO
這句報無效數字:
SELECT 1 FROM BO_HT_EM_BASIC_INFO WHERE TO_NUMBER(SUBSTR(TO_CHAR(BIRTHDAY),0,4)) > 60
心累累的,按照菜鳥我的理解,既然能select出來說明都是合法的啊,為啥放在where里面就無效了,求助大神幫我解答下
uj5u.com熱心網友回復:
既然能select出來說明都是合法的啊你是在 PLSQL 是查詢的吧? 應該是第一屏的資料都是合法的,你展開所有資料試試;
uj5u.com熱心網友回復:
不是PLSQL,是NAVICATE,直接查出所有的資料的
uj5u.com熱心網友回復:
CREATE TABLE AA_BAKAS
SELECT TO_NUMBER(SUBSTR(TO_CHAR(BIRTHDAY),0,4)) CC FROM BO_HT_EM_BASIC_INFO
看看能創建成功嗎?
uj5u.com熱心網友回復:
您的陳述句可以創建表成功
而且我發現類似下面這種陳述句也不能執行成功
SELECT BIRTHDAY FROM(
SELECT BIRTHDAY,TO_NUMBER(SUBSTR(TO_CHAR(BIRTHDAY),6,2)) AS MM FROM BO_HT_EM_BASIC_INFO WHERE RETIREMENT_NUM IS NULL)
WHERE MM <1 OR MM>12
子查詢是可以成功的,但是外面包了一層之后并且對TO_NUMBER的欄位做查詢,還是報ORA-01722: 無效數字。
資料庫版本:
uj5u.com熱心網友回復:
CREATE TABLE AA_BAK
AS
SELECT TO_NUMBER(SUBSTR(TO_CHAR(BIRTHDAY),0,4)) CC FROM BO_HT_EM_BASIC_INFO
看看能創建成功嗎?
uj5u.com熱心網友回復:
CREATE TABLE AA_BAK
AS
SELECT TO_NUMBER(SUBSTR(TO_CHAR(BIRTHDAY),0,4)) CC FROM BO_HT_EM_BASIC_INFO
看看能創建成功嗎?
找到了一個類似的,有點明白他說的意思,但是不知道怎么解決。。。
http://413486774.iteye.com/blog/1409294
uj5u.com熱心網友回復:
SQL陳述句如下,BIRTHDAY是日期型別,yyyy-MM-dd
這句是可以運行的,不會報錯:
SELECT TO_NUMBER(SUBSTR(TO_CHAR(BIRTHDAY),0,4)) FROM BO_HT_EM_BASIC_INFO
這句報無效數字:
SELECT 1 FROM BO_HT_EM_BASIC_INFO WHERE TO_NUMBER(SUBSTR(TO_CHAR(BIRTHDAY),0,4)) > 60
是不是還有別的 WHERE 條件 ?
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/97859.html
標籤:開發
上一篇:Oracle 連接超時
下一篇:更新sql文陳述句
