我需要创建一个约束或类似的约束,它只允许列中的A-Z
,_
和-
等字符。
如何做到这一点?
答案 0 :(得分:5)
try this..It Work Fine In ms sql server
CREATE TABLE TestTable
(ID INT, FirstCol VARCHAR(100),
CONSTRAINT FirstCol CHECK (FirstCol NOT LIKE '%[^a-zA-Z\_-]%' ESCAPE '\'))
答案 1 :(得分:0)
如果支持,则可以使用正则表达式约束。
使用 PostgreSQL 的示例如下所示:
CREATE TABLE user(
name VARCHAR
CONSTRAINT constraint_name CHECK (name ~* '^[A-Z_-]*$')
);
请注意,此正则表达式允许空字符串,不允许使用小写字符。
否则(在 MySQL 的情况下)你可以使用insert-trigger:
DELIMITER $$
CREATE TRIGGER trigger_name BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
IF (NEW.phone REGEXP '^[A-Z_-]*$' ) = 0 THEN
SIGNAL SQLSTATE '12345'
SET MESSAGE_TEXT = 'Invalid content';
END IF;
END$$
DELIMITER ;
对于 MS SQL:
CREATE TABLE table_name(
name VARCHAR(100) CHECK (name NOT LIKE '%[^A-Z_-]%'
))