嗨,我有一个varchar列,我只希望在最后一个字符上允许A-Z中的字符。我尝试了多种解决方案,但是没有用。我尝试的最后一个是
ALTER TABLE timetableslot
ADD CONSTRAINT CHK_RoomNo CHECK (roomNo NOT LIKE '%[^A-Z]');
但是我仍然可以在其中添加asdd1之类的值。有没有解决的办法?预先谢谢你
可以与ASCII()
一起使用SUBSTR()
功能:
ALTER TABLE timetableslot
ADD CONSTRAINT CHK_RoomNo CHECK (ASCII(SUBSTR(roomNo,-1)) BETWEEN 65 AND 90);
其中A的ASCII值为65,Z的ASCII值为90,所有其他大写字母都在此范围内。
regexp_like()
是一个简单的解决方案:
ALTER TABLE timetableslot ADD CONSTRAINT
CHK_RoomNo CHECK (REGEXP_LIKE(roomNo, '[A-Z]$') );