簡體   English   中英

如何在列上創建 REGEXP 約束?

[英]How can I create a REGEXP constraint on a column?

我正在嘗試對字段“StaffAdress”施加正則表達式約束,使其只能以“street”結尾。

這是我的嘗試,但似乎仍然無效。 我嘗試了 regexp '.*street$' 和 regexp '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

我認為您的問題是您正在將文字字符串而不是列與您的正則表達式進行比較。

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

應該是(不要忘記空格)

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

'StaffAddress' regexp '.*street$'將始終返回 false。 列名必須用反引號引起來,而不是用單引號引起來。

正確的是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM