zoukankan      html  css  js  c++  java
  • Oracle数据库中NARCHAR转换成NUMBER类型

    1.修改后的代码:

        public void addDirectorActorKeyword(long idStart, long idEnd) {
            SeriesMgr seriesMgr = new SeriesMgr();
            String strCondition = "";
            List<Comparable> paramlist = new ArrayList<Comparable>();
            List<Series> seriesList = new ArrayList<Series>();
            if(idStart != 0 && idEnd != 0){
                //以下两种sql方式都可以...Series表中parentmmobjectid为NVARCHAR2类型,不能使用直接使用between and
                //strCondition = "  to_number(parentmmobjectid) between ? and ? ";
                strCondition = "  parentmmobjectid between to_number(?) and to_number(?) ";
                paramlist.add(idStart);
                paramlist.add(idEnd);
                seriesList = seriesMgr.find(strCondition, paramlist,"parentmmobjectid asc");
            } 
            ********
        }

    直接执行sql语句是可以正常查询到内容的,上面代码对应Hibernate翻译成的sql语句是 select * from series where parentmmobjectid between '11111'  and '99999';可以正常的的查询到内容.

    但是通过Hibernate进行查询,对应的如果是strCondition = "  parentmmobjectid between ? and ? "; 就查询不到...

    原因就是在设置表字段的时候parentmmobjectid设置成了NVARCHAR类型,Oracle中的隐式自动转换没有NARCHAR类型到Number类型的转换,需要借助to_number()函数.

    select * from emp where hiredate = '17-11月-81'; 这个就是一个字符串转换成了日期.

    隐式转换的前提:被转换对象是可以转换的

    select * from emp where deptno = 10 和 select * from emp where deptno = '10'是一样的.

    显示转换:

  • 相关阅读:
    2010年Ei收录的中国期刊
    做DSP最应该懂得157个问题
    【资料分享】 OpenCV精华收藏
    孙鑫VC学习笔记:多线程编程
    对Davinci DM6446的评价[转]
    TI首席科学家展望2020年处理器架构和DSP的发展
    37份计算机科学的经典文档
    VC学习笔记:状态栏
    【VC参考手册】MFC类库:4.21版和6.0版
    TI DSP入门学习
  • 原文地址:https://www.cnblogs.com/DreamDrive/p/7390231.html
Copyright © 2011-2022 走看看