我需要验证一个字符串,该字符串不应包含小写字母和特殊符号。我使用下面的查询,使用这个我能找到特殊的符号,无法找到小写。请建议最佳方式。
DECLARE @InvNum VARCHAR(256);
SET @InvNum='abcACB123'
IF (@InvNum LIKE '%[^A-Z0-9]%')
BEGIN
Print 'Enter valid Invoice #, Special characters and Lowercase Letters are not allowed'
END
ELSE
BEGIN
Print 'Validation Success'
END
答案 0 :(得分:4)
HalfTrackMindMan几乎正确(并且对样本数据有效),但不幸的是,字符范围总是扩展为包含小写字母(因此bcABC123
将通过他的验证):
DECLARE @InvNum VARCHAR(256);
SET @InvNum='abcACB123'
IF (@InvNum COLLATE Latin1_General_CS_AS LIKE '%[^ABCDEFGHIJKLMNOPQRSTUVWXYZ0-9]%')
BEGIN
Print 'Enter valid Invoice #, Special characters and Lowecase Letters are not allowed'
END
ELSE
BEGIN
Print 'Validation Success'
END
([A-Z]
展开为AbBcCdDeEf...zZ
)
使用哪种排序规则是首选项 - 或者是二进制排序规则,还是区分大小写(_CS
)和重音敏感(_AS
)的排序规则。
答案 1 :(得分:2)
IF (@InvNum COLLATE Latin1_General_CS_AS LIKE '%[^A-Z0-9]%')