使用SQL Scripts,我需要验证逗号分隔值。我该如何验证字符串变量?
每个值的验证都应该是Right / Left Trim,并且最后一个值不应该有任何特殊字符,如逗号或句点。
create table #test
(col varchar(100))
insert into #test values
('1,2'),
('1,2,'),
('1,'),
('1,2,3,4,5')
select * from #test
在上面的查询中,对于第二个值 - 预期结果为1,2 在上面的查询中,对于第三个值 - 预期结果为1
答案 0 :(得分:1)
您可以使用检查约束。你似乎想要这样的东西:
alter table t add constraint chk_name as
(name like '%,%' and
name not like '%,%,%' and
name not like '%[^a-zA-Z,]%'
)
SQL Server不支持正则表达式。这实现了规则:
您可能会发现需要稍微灵活一点,但这会处理您问题中的案例。
答案 1 :(得分:1)
您可以更新表格以修复“冒犯性”值。
update #test
set col = substring(col, 1, len(col) - 1)
where col not like '%[0-9]'
这将删除值不以数字结尾的最后一个字符。