[英]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.