String sql = "select resourceSn,aclState&1,aclState&2,aclState&4,aclState&8,aclTriState from acl ";
我用的是mysql数据库,我想问下为什么它提示sql语句有错。它的错误是这样的 ,好像认识不出& 符号,不是mysql支持这样查询吗?
  错误信息:
  unexpected char: '&' [ select resourceSn,aclState&1,aclState&2,aclState&4,aclState&8,aclTriState from acl
    
  谁能帮忙解决  在线等。。谢了。

解决方案 »

  1.   

    aclState&1 是字段名?还是什么?如果是字符串连接,改成 concat(aclState,1)
      

  2.   

    是不是&前后缺了空格啊?
      

  3.   

    aclState是字段名,俄日我要得到的结果是要aclState&1  
      

  4.   

    3楼说的是不是&前后缺了空格,我试了 还是不行 select resourceSn,aclState & 1,aclState & 2,aclState & 4,aclState & 8,aclTriState from acl
      

  5.   

    谢谢你们 ,我解决了 是我用错了hibernate的一个方法,我写成this.getSession().createQuery(sql).list(); 因为与操作在hql中不支持,所以只能用this.getSession().createSQLQuery(sql).list();     public List searchAclRecords(String principalType,String principalSn){
            String sql = 
    " select resourceSn,aclState&1,aclState&2,aclState&4,aclState&8,aclTriState from acl " +" where principalType = '"+principalType + "' and principalSn = "+principalSn;
          return   this.getSession().createSQLQuery(sql).list();    }
      

  6.   

    提供以下语句的结果:
    show create table acl;
    select aclState from acl;就你提供的语句,并没有错。另外是不是mysql版本问题?你的mysql是什么版本?测试结果:字段类型无关。mysql> create table testaaa(a int);
    Query OK, 0 rows affected (0.01 sec)mysql> insert into testaaa values(11);
    Query OK, 1 row affected (0.02 sec)mysql> select a,a&1,a&2 from testaaa;
    +------+------+------+
    | a    | a&1  | a&2  |
    +------+------+------+
    |   11 |    1 |    2 |
    +------+------+------+
    1 row in set (0.00 sec)mysql> create table testbbb(a char(2));
    Query OK, 0 rows affected (0.01 sec)mysql> insert into testbbb values (11);
    Query OK, 1 row affected (0.02 sec)mysql> select a,a&1,a&2 from testbbb;
    +------+------+------+
    | a    | a&1  | a&2  |
    +------+------+------+
    | 11   |    1 |    2 |
    +------+------+------+
    1 row in set (0.00 sec)mysql> select a,a & 1,a & 2 from testbbb;
    +------+-------+-------+
    | a    | a & 1 | a & 2 |
    +------+-------+-------+
    | 11   |     1 |     2 |
    +------+-------+-------+
    1 row in set (0.00 sec)
      

  7.   

      8楼的,是我调用错了hibernate的一个方法才不行。。谢谢哦