As documented, recursive table expressions treat all columns as varchar. Is 
there any way to put the required casts in a subexpression, rather than 
repeating them throughout the expression? Seems like it needs another table 
expression, but there doesn't appear to be a way to nest them.

For example:

with recursive t(i, j, v) as (
   select 1407352, 1407948, value from codenew where id = (1407948 + 
1407352) / 2
   union all
   (select (cast(i as int) + cast(j as int)) / 2, j, value from t inner 
join codenew on id = ((cast(i as int) + cast(j as int)) / 2 + cast(j as 
int)) / 2 where v < 'E2-A150' and cast(i as int) < cast(j as int) union all
    select i, (cast(i as int) + cast(j as int)) / 2, value from t inner 
join codenew on id = (cast(i as int) + (cast(i as int) + cast(j as int)) / 
2) / 2 where v > 'E2-A150' and cast(i as int) < cast(j as int))
) select * from t

This is pretty hairy even without all the cast() calls. It would be nice to 
factor them out into a subexpression, but I haven't found a way to do that.

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.

Reply via email to