真是要被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里面就无效了,求助大神帮我解答下
这句是可以运行的,不会报错:
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里面就无效了,求助大神帮我解答下
不是PLSQL,是NAVICATE,直接查出所有的数据的
ASSELECT TO_NUMBER(SUBSTR(TO_CHAR(BIRTHDAY),0,4)) CC FROM BO_HT_EM_BASIC_INFO看看能创建成功吗?
不是PLSQL,是NAVICATE,直接查出所有的数据的您的语句可以创建表成功
而且我发现类似下面这种语句也不能执行成功
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: 无效数字。数据库版本:
找到了一个类似的,有点明白他说的意思,但是不知道怎么解决
http://413486774.iteye.com/blog/1409294
是不是还有别的 WHERE 条件 ?