Если вы используете SQL Server, я бы предложил:
select (case when p.MPRNExpected not like '%[^0-9]%' and
len(p.MPRNExpected) between 8 and 12
then p.MPRNExpected
end) as MPRN_Expected
. . .
from dbo.worksheet_pvt p
Предположительно, вы не хотите isnumeric()
, потому что он допускает такие символы, как '.'
, '-'
и 'e'
в "число".
Проблема с вашим кодом в том, что у вас есть два case
выражения, и они не заканчиваются правильно.
Как примечание, в MySQL вы должны использовать регулярные выражения:
select (case when p.MPRNExpected regexp '^[0-9]{8-12}$'
then p.MPRNExpected
end) as MPRN_Expected
. . .
from dbo.worksheet_pvt p