我最近刚开始使用SQL,任务是创建一个标量函数。我创建了一个字符串(varchar),它最多允许13个字符(数字和-),如果可能的话,我希望限制这个字符串。现在我可以插入13个数字,但我只希望它允许12个数字和一个额外的符号,在本例中是'-'。
如果我在字符串中包含13个数字(而不是符号),有没有办法限制打印字符串?
declare @personNr varchar(13)
declare @atpos int
declare @atpos2 int
declare @cnt int
set @personNr = '990511-8346'
set @atpos = CHARINDEX('-', reverse(@personNr))
set @atpos2 = CHARINDEX('+', reverse(@personNr))
if @atpos = 5 or @atpos2 = 5 or @personNr NOT LIKE '%[^0-9]%'
print '1'
else
print '0'
现在它允许打印,即使我用另一个数字交换'-'符号,我不想这样。有什么办法限制这一点吗?谢谢!
1条答案
按热度按时间p1tboqfb1#
一种方法是
REPLACE
连字符(-
),检查字符串是否为12个字符长且不包含其他字符,如果不是REPLACE
d,则检查字符串是否为13个字符: