Используйте ограничение CHECK
для столбца:
CREATE TABLE TEST_TABLE
(
LNAME VARCHAR2(4000) CONSTRAINT TEST_TABLE__LNAME__MINLENGTH2 CHECK ( LENGTH( LNAME ) >= 2 )
);
Тогда вы можете использовать RPAD
в своем операторе вставки, если значение слишком короткое:
INSERT INTO TEST_TABLE ( LNAME ) VALUES ( RPAD( 'A', 2 ) );
или вы можете использовать оператор MERGE
:
MERGE INTO TEST_TABLE t
USING ( SELECT 'A' AS value FROM DUAL ) v
ON ( 0 = 1 )
WHEN NOT MATCHED THEN
INSERT ( LNAME ) VALUES ( CASE WHEN LENGTH( v.value ) < 2 THEN RPAD( v.value, 2 ) ELSE v.value END );
или анонимный блок PL / SQL:
DECLARE
value TEST_TABLE.LNAME%TYPE := 'B';
BEGIN
INSERT INTO test_table ( lname ) VALUES ( CASE WHEN LENGTH( value ) < 2 THEN RPAD( value, 2 ) ELSE value END );
END;
/
db <> fiddle здесь
Если вы хотите изменить существующие данные, используйте оператор UPDATE
:
UPDATE test_table
SET lname = RPAD( lname, 2 )
WHERE LENGTH( lname ) < 2