Re: jdbc problem
От | Richard Huxton |
---|---|
Тема | Re: jdbc problem |
Дата | |
Msg-id | 200304241015.28464.dev@archonet.com обсуждение исходный текст |
Ответ на | jdbc problem ("milimeter@163.com" <milimeter@163.com>) |
Список | pgsql-general |
On Thursday 24 Apr 2003 2:38 am, milimeter@163.com wrote: > Hi, all > > I have a table: CREATE TABLE person (age char(4)) > After executing "select age from person" with jdbc, I extract the value > with: > getInt("age") > Now is the problem, the same code can succeed on oracle, but on > postgresql, because of not triming space automaticlly, it cause an error. If you don't want space-padded text, don't use char(), use varchar(). The char(4) column *always* contains four characters (space padded). If for some reason you need to use char() types, then just trim it before applying getInt() or write your own function that can cope with trailing spaces. > So, I hope the newest jdbc driver for postgresql can automaticlly trim > space just like oracle. The same problem also exists when execute insert: > Provided "age" is an integer, then "insert into person values ('30')" > can be executed correctly, but "insert into person values ('')" can not. On > oracle, a default value will be added. So jdbc driver for postgresql should > also do it. Oracle is probably treating the empty string as a null, which is where your default value is coming from. It shouldn't do this, since the empty string is not null. Testing here, I can insert values of 30, '30', '' into a char(4) fine from the command-line. Ah! Unless where you say "age is an integer" you mean that the age column is of type integer, in which case PG can't translate an empty string into an integer (and nor can I). On the other hand, the string '30' can obviously be converted to an integer. -- Richard Huxton
В списке pgsql-general по дате отправления: