[ --ja-- @ 01.07.2012. 09:27 ] @
| Pozdrav svima,
recimo da imam tablicu ovako kreiranu i napunjenu:
Code: CREATE TABLE `test`
(
`IDTest` INT NOT NULL AUTO_INCREMENT,
`TestKolona` INT NULL,
PRIMARY KEY (`IDTest`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
INSERT INTO `test` (TestKolona) VALUES (4);
INSERT INTO `test` (TestKolona) VALUES (2);
INSERT INTO `test` (TestKolona) VALUES (NULL);
Pokušavam natjerati slijedeći upit da radi, ali neće pa neće:
Code: SELECT
IDTest
, CAST(COALESCE(TestKolona, 3) AS INT) AS TestKolona
FROM test;
Naime COALESCE u ovom slučaju iz nekog razloga ne vraća INT, pa mi se ta kolona ne mapira dobro u aplikaciji, što sam htio popraviti CAST-om u int.
Gdje sam pogriješio?
Marko |
[ bogdan.kecman @ 01.07.2012. 15:06 ] @
Code:
$> mysql --column-type-info test
...
mysql> SELECT IDTest, CAST(COALESCE(TestKolona, 3) AS SIGNED) AS TestKolona FROM test;
Field 1: `IDTest`
Catalog: `def`
Database: `test`
Table: `test`
Org_table: `test`
Type: LONG
Collation: binary (63)
Length: 11
Max_length: 1
Decimals: 0
Flags: NOT_NULL PRI_KEY AUTO_INCREMENT NUM PART_KEY
Field 2: `TestKolona`
Catalog: `def`
Database: ``
Table: ``
Org_table: ``
Type: LONGLONG
Collation: binary (63)
Length: 11
Max_length: 1
Decimals: 0
Flags: BINARY NUM
+--------+------------+
| IDTest | TestKolona |
+--------+------------+
| 1 | 4 |
| 2 | 2 |
| 3 | 3 |
+--------+------------+
3 rows in set (0.02 sec)
mysql>
el ti ovo radi posao ?
p.s. bila je neka stara verzija mysql-a sa bagom ovde .. koja ti je verzija gde radis? da li mozes da odradis upgrade?
[ --ja-- @ 01.07.2012. 19:25 ] @
U principu mi to ne pomaže, MySQL single tip mi na aplikaciju stiže kao Long, a business objekt za to polje mi ima Property tipa int. Imam helper klasu koja automatski mapira kolone iz tablice na property-e u business objektu. Pošto mi je property tipa int, ne mogu mu bez cast-a na aplikaciji pridružiti long vrijednost, a cast raditi u jednoj generičkoj helper klasi nema smisla... Imati business objekte koji imaju propertye različite od stvarnog stanja na bazi mi isto nema smisla, a nema mi smisla niti mijenjati kolonu u bazi na single jer je riječ o foreign key-u na šifrarnik koji ima svega 3 zapisa :/
MySql je "Server version: 5.1.62-0ubuntu0.11.04.1 (Ubuntu)", na mom je stroju i mogu mu raditi što god želim...
Anyway, imam način da ovo zaobiđem na aplikaciji, samo me zanimalo što ne valja u mom upitu, jel to bug u MySQL ili nisam nešto dobro razumio?
Tnx!
[ bogdan.kecman @ 01.07.2012. 21:44 ] @
ne valja ti AS INT, INT nije validan tip
http://dev.mysql.com/doc/refma...t-functions.html#function_cast
Citat:
The type for the result can be one of the following values:
BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL[(M[,D])]
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.