我需要在db2中编写一个约束,其中用户名必须以@开头,后跟字母数字模式,最大长度为31,并且只能包含小写字母,数字和_(下划线)符号。我这样做了:
ALTER TABLE KUNDENKONTAKTDATEN ADD CONSTRAINT
TwitterID_CHECK CHECK ( trim(length(TWITTER_ID)) <= 31 AND TWITTER_ID like '@%')
我的问题是该部分只包含小写字母,数字和_。
这是我的作业问题,提示是使用Trim,Translate,Length和Substr等功能,但我可以使用其他功能。互联网告诉我使用fn:matches函数,但我不确定它是如何工作的。
任何人都可以帮我解决这个问题,无论是否使用fn:matches?
提前谢谢
编辑:实际上并不是this的副本,但可以应用类似的方法来检查它是否包含非法值。这个问题不仅仅是关于查找列是否包含特殊字符。我的问题的一部分是唯一的:长度,从开始,没有找到它是否具有特殊字符,但只允许一个特殊字符(_)作为值,因此不是重复。
答案 0 :(得分:0)
最后,这解决了这个问题。
ALTER TABLE KUNDENKONTAKTDATEN
ADD CONSTRAINT
TwitterID_CHECK CHECK (trim(length(TWITTER_ID)) <= 31 AND TWITTER_ID LIKE '@%'
AND LENGTH(TRIM(TRANSLATE(TWITTER_ID, ' ',
'abcdefghijklmnopqrstuvwxyz0123456789_@'))) = 0)
感谢@Hogan和@mustaccio