On fim, 2006-09-21 at 21:57 -0400, Brad Budge wrote:
> I have a field that is varchar(15) type and an example of data I'm
> working with is (PROJ-0001-06)
> select cast((max(substring(test.test from 6 for 4))) as integer) + 1
> FROM test where max(substring(test.test from 11 for 2));
>
as someone already pointed out, this where clause
is just equivalent to WHERE '06'
and does not mean anything
> List below is a better idea of what my table looks like and the result
> I need.
> PROJ-0004-05
> PROJ-0001-06
> PROJ-0002-06
> PROJ-0003-06
> When I run my select statement I want to return the number 4. The
> idea is that I need the next highest number in the middle but take in
> consideration that the highest trailing numbers take president.
if all the values are really formatted like this, you could ORDER BY to
get the value you want:
SELECT
1 +
CAST(substring(test.test from 6 for 4) AS INTEGER)
FROM test
ORDER BY
substring(test.test from 11 for 2) DESC,
substring(test.test from 6 for 4) DESC
LIMIT 1;
gnari