You may want to use ISNUMERIC user-defined-function in
Sample UDFs for Migration
Code:
------------------------------ Commands Entered ------------------------------
WITH a_table(charcolumn) AS (
VALUES
'1' , '2' , '3' , 'a' , 'b' , 'c' , '7' , '8' , '9'
)
SELECT MIN( INT(charcolumn) ) + 1
FROM a_table a
WHERE ISNUMERIC(charcolumn) = 1
AND NOT EXISTS
(SELECT 0
FROM (SELECT charcolumn
FROM a_table
WHERE ISNUMERIC(charcolumn) = 1
) b
WHERE INT(b.charcolumn) = INT(a.charcolumn) + 1
)
;
------------------------------------------------------------------------------
1
-----------
4
1 record(s) selected.
The reason I used subquery in NOT EXISTS subquery is to guaruntee the evaluation sequence of predicates
("ISNUMERIC(charcolumn) = 1" and "INT(b.charcolumn) = INT(a.charcolumn) + 1").