Hi Jasvinder,

I think you could use a custom function here.

Something like that (typing directly in my mail client - so be prepared for typos and other errors ;) ):

Java side:
==========
package my.package;

public class MyDerbyFunctions {
        static Integer toInt(String str) {
                try {
                        return Integer.valueOf(str);
                }
                catch(NumberFormatException nfe) {
                        return null;
                }
        }
}


Derby side:
===========
create function toInt(str varchar(128)) returns int language java external name 'my.package.MyDerbyFunctions.toInt' parameter style java no sql;


See:
http://wiki.apache.org/db-derby/DerbySQLroutines
http://db.apache.org/derby/docs/10.5/ref/rrefcreatefunctionstatement.html

Regard,
Sylvain

Jasvinder S. Bahra a écrit :

You may be able to use a CASE expression to solve this problem:

SELECT name, power FROM card
WHERE
( case when power = '*' or power = '{' or power = '^' then null else integer( power ) end ) > 7;

Unfortunately, the non-numeric characters I mentioned are the only ones in the data set *at the moment*. In the future, other non-numeric characters may be introduced - which makes this technique inpractical.

I think i'm going to have to bite the bullet and just store the data in two columns - one of type INTEGER, the other VARCHAR, and just make sure the INSERT logic only populates the INTEGER column if the value is made up of numeric characters.

I know this is a bit of a no-no in terms of database design, but I can't see any way around it.

In any case, thanks for the suggestion Rick.

Jazz






--
[email protected]
http://www.chicoree.fr


Reply via email to