mariadb 如何在列上创建REGEXP约束?

nkkqxpd9  于 2022-12-13  发布在  其他
关注(0)|答案(2)|浏览(73)

我试图对字段“StaffAddress”进行正则表达式约束,使其只能以“Street”结尾。
这是我的尝试,但似乎仍然无效。我尝试了regexp '.*street$'和regexp 'street$',但两者都不允许我在表中添加“test street”。

CREATE TABLE MsStaff (
   `StaffId` CHAR(4) PRIMARY KEY CHECK (`StaffId` regexp 'S[0-9][0-9][0-9]'),
    `StaffName` VARCHAR(100) NOT NULL,
    `StaffGender` VARCHAR(6) NOT NULL,
    `StaffAddress` VARCHAR(100) NOT NULL CHECK ('StaffAddress' regexp '.*street$')
)

我正在使用10.4.19-MariaDB

ogq8wdun

ogq8wdun1#

'StaffAddress' regexp '.*street$'将始终返回false。列名必须用反引号引起来,而不是用单引号引起来。
正确答案是:

`StaffAddress` VARCHAR(100) NOT NULL CHECK (`StaffAddress` regexp '\w*\ street$')
nfg76nw0

nfg76nw02#

我认为你的问题是你在比较一个字符串,而不是一个列,你的正则表达式。

...CHECK ('StaffAddress' regexp '.*street$')

应为(不要忘记空格)

...CHECK (StaffAddress regexp '.* street$')

相关问题