[英]Migrate MS-Access tables with Regular Expression in Validation Rule to SQL-Server
我正在將 MS-Access.accdb-database 遷移到 SQL Server 2017。在我的 MS Access 數據庫中,有很多表列的驗證規則類似於“NOT LIKE [.a-z0-9.] ”。 我找不到任何方法在 SQL 服務器中添加做同樣事情的約束。 有沒有辦法做到這一點,或者根本不可能在不丟失功能的情況下將 MS Access 遷移到 SQL-Server?
ALTER TABLE [Zones]
ADD CONSTRAINT [CHK_Zon]
CHECK ([Zon] NOT LIKE '*[!a-z0-9.]*')
我想你想要:
NOT LIKE '%[^a-z0-9.]%'
這將意味着只有字母a
到z
、數字0
到9
和字符.
將被允許。 請注意,可能允許使用全部或部分大寫字母,具體取決於您的排序規則,以及使用az
的所有小寫字母。
%
是多字符通配符。
^
(克拉)符號表示“任何不在指定范圍內的單個字符” 。 因此,例如, 'Test' NOT LIKE '%[^Az]%'
將返回 TRUE,因為它只包含Az
范圍內的字符(它不包含它之外的任何字符。
SQL 服務器不支持正則表達式(反正原生不支持,通過CLR函數可以),只有簡單的模式匹配; 你可以在這里閱讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.