如何添加仅允许最后一个字符使用A-Z的检查约束

嗨,我有一个varchar列,我只想在最后一个字符上允许A-Z字符。我尝试了多种解决方案,但是没有用。我尝试的最后一个是

ALTER TABLE timetableslot
ADD CONSTRAINT CHK_RoomNo CHECK (roomNo NOT LIKE '%[^A-Z]');

但是我仍然可以在其中添加像asdd1这样的值。有没有解决的办法?预先谢谢你

waitwat 回答:如何添加仅允许最后一个字符使用A-Z的检查约束

您可以将ASCII()函数与SUBSTR()一起使用:

ALTER TABLE timetableslot
ADD CONSTRAINT CHK_RoomNo CHECK (ASCII(SUBSTR(roomNo,-1)) BETWEEN 65 AND 90);

Demo

其中A的ASCII值为65,Z的ASCII值为90,所有其他大写字母都在此范围内。

,

regexp_like()是一个简单的解决方案:

ALTER TABLE timetableslot ADD CONSTRAINT
    CHK_RoomNo CHECK (REGEXP_LIKE(roomNo,'[A-Z]$') );
本文链接:https://www.f2er.com/2808705.html

大家都在问