环境说明:
测试数据库为Mysql数据库,其他数据库未知
测试语言为Java
数据库操作使用dbutils包,不知和这个是否有关
select count(id) from table这条SQL语句作用大家都明白什么作用了,本来一直认为返回值为一整形结果,但是试试胜于雄辩。 刚刚在写一个jsp程序,数据库操作使用了dbutils包,使用了select count(id) from table 这条语句计算table表中的记录数,结果使用Integer接收,运行测试,报错了
java.lang.ClassCastException: java.lang.Long
知道是类型转换的问题了,同时也迷惑的,count()的结果怎么是long类型的呢,不确定,在获取结果后面加入getClass方法,测试显示类型果真是Long类型的,这才确定count()的结果为Long类型了。但是Long类型怎么转成Integer类型呢,说实话还真没试过,在结果前面加入(Integer)强制转换,不行的哦。查文档,终于知道了原来在long类型结果后面加入.intValue()就能转换成功了。
PS:百度一下,得知hibernate版本之间也存在这个问题,在Hibernate3.0之前是Integer类型的,但是如果用了Hibernate3.0和Hibernate3.1之后就是Long类型的了,不知搞什么飞机
为了自己的学习、减少在程序上遇到类似的问题解决的需要,在此记录,以供后面的观者借鉴。
分享到:
相关推荐
例如,如果你想要获取一个表中所有不同的城市名称,可以使用 `SELECT DISTINCT city FROM table`。 2. 分页查询:在 MySQL 中,可以使用 `LIMIT` 关键字实现分页效果。例如,`LIMIT offset, limit` 可以跳过 `...
1. **COUNT()**:计算行数,如`SELECT COUNT(*) FROM table_name;`。 2. **SUM()**:求和,如`SELECT SUM(column) FROM table_name;`。 3. **AVG()**:平均值,如`SELECT AVG(column) FROM table_name;`。 4. **MAX...
- 示例:`SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id;` 4. **子查询** - 子查询是嵌套在其他查询中的查询,可以用于提供临时的结果集供外部查询使用,如`SELECT * FROM table WHERE ...
SELECT TOP 20 * FROM table WHERE id IN (SELECT TOP 50 id FROM table ORDER BY id DESC); ``` 5. **使用`ROW_NUMBER()`函数进行分页查询**: ```sql WITH t AS ( SELECT ROW_NUMBER() OVER (ORDER BY cg_id...
- 函数返回值,如`CREATE FUNCTION get_student_count() RETURNS INT SELECT COUNT(*) FROM students;` 12. 触发器: - 自动执行的SQL代码,如在数据更改时触发,用于实现业务规则或审计 以上只是MySQL语句的...
(SELECT COUNT(*) FROM Table1 AS t1 WHERE result='胜' AND t1.date = t3.date) AS 胜, (SELECT COUNT(*) FROM Table1 AS t2 WHERE result='负' AND t2.date = t3.date) AS 负 FROM Table1 AS t3 GROUP BY date...
SELECT COUNT(DISTINCT city) FROM authors SELECT COUNT(*) FROM titles SELECT COUNT(*), AVG(price) FROM titles WHERE advance > $1000 ``` 这三个语句将分别返回 authors 表中 city 列的非空数量、titles 表中...
FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name; ``` - **应用场景:** 当需要从多个表中获取数据时,且这些表之间存在关联关系。 **2. 左连接 (Left Join):** - **定义:** 左...
select * from tab1 where id not in (select id from tab2); -- 正确示例 select * from tab1 t1 where not exists (select 1 from tab2 t2 where t1.id = t2.id); ``` ##### 4.7 少用DISTINCT,用GROUP BY...
- 子查询可以在 `SELECT`, `FROM`, `WHERE` 子句中嵌套,如 `SELECT * FROM employees WHERE id IN (SELECT manager_id FROM departments);` 7. 视图(View): - `CREATE VIEW` 创建虚拟表,如 `CREATE VIEW ...
3. 函数:可以返回值的操作,如内置的`COUNT()`函数。 八、事务处理 1. 事务:一组操作,要么全部执行,要么全部回滚。 2. 开始事务:`START TRANSACTION;` 3. 提交事务:`COMMIT;` 4. 回滚事务:`ROLLBACK;` 九、...
- 基本查询:了解如何从单个表中选择特定列,如`SELECT column1, column2 FROM table_name;` - 条件查询:使用`WHERE`子句过滤结果,如`WHERE column = value`或`WHERE column > value` - 排序查询:使用`ORDER ...
SELECT COUNT(*) FROM Employee WHERE Job_Id = '0001' ``` 简单的SELECT语句用于查询数据,如: ```sql SELECT * FROM Employee WHERE fname='Paolo' ``` 还可以使用函数处理数据,例如: ```sql SELECT convert...
4. `GROUP BY`与`HAVING`:分组和条件筛选,如`SELECT department_id, AVG(salary) FROM employees GROUP BY department_id HAVING AVG(salary) > 5000`,查找平均薪资超过5000的部门。 三、数据插入、更新与删除 1...
- **选择所有列**:使用`SELECT * FROM table_name`可以获取表中的所有列。 - **选择部分列**:通过`SELECT column1, column2 FROM table_name`指定需要查询的特定列。 - **更改列标题**:可以使用`AS`关键字重命...
如果已有锁则自动退出:Select id,salary From s_emp where id=1 For Update NoWait; FOR UPDATE :可以再加 OF 精确到某格。如: ... For Update OF salary ... 注意要解锁。 五、ORDER BY 子句,排序 Order ...
通过SQL语句 `select count(*) as dida from sysobjects where id = object_id(N'[所有者].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1` 来查询表是否存在,根据返回值判断表是否存在,返回值为1表示存在...
SELECT COUNT(*) FROM olap_b_dw_hotelorder_f WHERE create_date_wid NOT REGEXP '\d{8}'; ``` 2. **`REGEXP_EXTRACT`**: - 语法:`REGEXP_EXTRACT(subject, pattern, index)` - 返回值:STRING - 描述:...
- 示例:`SELECT * FROM Students WHERE ID IN (SELECT ID FROM Teachers);` 3. **EXISTS子查询** - 示例:`SELECT * FROM Students WHERE EXISTS (SELECT * FROM Teachers WHERE Students.TeacherID = Teachers....