Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to allow letters only in VARCHAR2 column (Oracle SQL)

I have a column "surname" in my Oracle SQL database.

CREATE TABLE test ( id VARCHAR2(3) PRIMARY KEY, surname VARCHAR2(10));

What should I add in the query above, to allow inserting only alphabetical characters in a "surname"?


1 Answers

You need to have a CHECK constraint in your table.

The following should suffice CHECK (regexp_like(surname,'^[[:alpha:]]+$')). Where [[:alpha:]] is alphabet character class. Thus, only considers the alphabets.

Let's see a test case -

SQL> CREATE TABLE TEST(
  2  surname VARCHAR2(10),
  3  CONSTRAINT constraint_name CHECK (regexp_like(surname,'^[[:alpha:]]+$'))
  4  )
  5  /

Table created.

SQL>
SQL> INSERT INTO TEST values ('LALIT')
  2  /

1 row created.

SQL>
SQL> INSERT INTO TEST values ('123')
  2  /
INSERT INTO TEST values ('123')
*
ERROR at line 1:
ORA-02290: check constraint (LALIT.CONSTRAINT_NAME) violated


SQL>

So far it works good. Let's check with Alphanumeric values.

SQL> INSERT INTO TEST VALUES ('LALIT123')
  2  /
INSERT INTO TEST VALUES ('LALIT123')
*
ERROR at line 1:
ORA-02290: check constraint (LALIT.CONSTRAINT_NAME) violated


SQL>
SQL> SELECT * FROM TEST
  2  /

SURNAME
----------
LALIT

SQL>

So, the CHECK constraint ONLY allows the alphabets.

like image 71
Lalit Kumar B Avatar answered Dec 16 '25 13:12

Lalit Kumar B



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!