Скорее всего, есть более элегантное решение, но это должно сработать:
SELECT *
FROM payment_line pl
WHERE LENGTH(TRIM(TRANSLATE(pl.check_num, '0123456789',' '))) IS NULL
AND TRIM(TRANSLATE(pl.check_num, '0123456789','0123456789')) > 12345;
редактирование:
Если я понимаю ваш комментарий к Адаму Пейнтеру, для ввода:
0A132
1A117
2A123
12D24
02134
11111
12345
21334
и вы использовали 1A117
в качестве сравнения, результирующий набор будет:
2A123
12D24
02134
11111
12345
21334
Можете ли вы подтвердить, что 02134
и 11111
должны быть в этом наборе результатов? Кажется, они не соответствуют требованиям >
, например 1A117
. Однако, если это опечатка, вы можете запустить простое сравнение строк, чтобы получить этот набор:
SELECT *
FROM payment_line pl
WHERE pl.check_num > '1A117';
редактировать 2
Хорошо, я думаю, что вижу, куда вы идете с этим. Вы ищете, чтобы получить строки в БД, которые были введены после строки ввода. Если вы посмотрите на мой форматированный список выше, вы увидите, что ваш результирующий набор - это все, что находится ниже входной строки. Итак, учитывая это, я представляю на ваше утверждение следующее:
SELECT *
FROM payment_line
WHERE rowid > (select rowid from payment_line where check_num ='1A117');