1>SELECT column_name, data_type,column_type FROM information_schema.columnsWHERE table_name ='new_table';2+--------------+-----------+-------------+3| column_name | data_type | column_type |4+--------------+-----------+-------------+5| id |int|int(11)|6| a |int|int(11)|7| b |int|int(11)|8| new_tablecol |varchar|varchar(45)|9+--------------+-----------+-------------+104rowsinset(0.00 sec)
Javaで実行するSQLをMySQL Clientからも実行して確認。
sql
1>SELECT*FROM`new_table`LIMIT0,1;23+----+------+------+--------------+4| id | a | b | new_tablecol |5+----+------+------+--------------+6|1|0|1|NULL|7+----+------+------+--------------+81rowinset(0.00 sec)
他のカラム(例えばカラムそのものを取り出しており、関数を使っていない)
SELECT `a`,
COALESCE(SUM((CASE
WHEN (`a` = 1) THEN 5
ELSE NULL
END)),
0) AS `aa`
FROM
new_table;
とすれば、`a`のほうはintと認識されています。
CREATE TABLE `new_table` (
`id` INT NOT NULL AUTO_INCREMENT,
`a` INT NULL,
`b` INT NULL,
PRIMARY KEY (`id`));
INSERT INTO new_table VALUES
( 1,1,1)
,( 2,2,2);
CREATE TABLE a as SELECT
COALESCE(SUM((CASE
WHEN (`a` = 1) THEN 5
ELSE NULL
END)),
0) AS `aa`
FROM
new_table;
CREATE TABLE b AS SELECT
SUM(CASE WHEN `a`=1 THEN 5 ELSE 0 END) AS `aa`
FROM
new_table;
SHOW CREATE TABLE a;
SHOW CREATE TABLE b;
Table
Create Table
a
CREATE TABLE a ( aa decimal(23,0) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8
Table
Create Table
b
CREATE TABLE b ( aa decimal(23,0) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8