SQL验证字符串变量

时间:2016-06-11 16:47:59

标签: sql sql-server

使用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

2 个答案:

答案 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]'

这将删除值不以数字结尾的最后一个字符。