Один из способов, с помощью SUBSTR
, INSTR
и TO_NUMBER
. Поскольку вы отметили PLSQL
.
Это работает. вы можете попробовать это?
Сначала создайте function
для проверки строки, переданной в качестве параметра.
CREATE or replace FUNCTION is_number (p_string IN VARCHAR2)
RETURN varchar2
IS
v_new_num varchar2(2000);
BEGIN
v_new_num := TO_NUMBER(p_string);
RETURN NULL;
EXCEPTION
WHEN VALUE_ERROR THEN
RETURN p_string;
END is_number;
-- function created
Затем используйте любой один из ниже запросов, чтобы получить желаемый результат:
select part,check_part,(part ||' | ' || req_part) As Final_part from
(
select part,(substr(part,-2,instr(part,'-',1,1))) as check_part,
IS_NUMBER((substr(part,-2,instr(part,'-',1,1)))) as req_part
-- calling IS_NUMBER function
from parts
) parts;
-- OR
select part,check_part,(part ||' | ' || req_part) As Final_part from
(
select part,substr(part,-2,2) as check_part,
IS_NUMBER(substr(part,-2,2)) as req_part
-- calling IS_NUMBER function
from parts
) parts;
Выход:
PART CHECK_PART FINAL_PART
1000-001-2211 11 1000-001-2211 |
1000-001-2211AA AA 1000-001-2211AA | AA
1000-001-2211AB AB 1000-001-2211AB | AB
1000-001-2211AQ AQ 1000-001-2211AQ | AQ
1000-001-2211BI BI 1000-001-2211BI | BI
Тест Скриншот:
Вы пробовали where where: WHERE columnname LIKE '% [a-z] [a-z]'? – CLaFarge
Одна из вещей, которая действительно помогает нам помочь вам в том, чтобы включить то, что вы пробовали, и некоторые примеры кода не могут повредить. – CLaFarge
@ Zahoor вы можете использовать ISNUMERIC –