如何识别字符串中的小写和特殊符号?

时间:2011-06-24 14:30:33

标签: sql-server sql-server-2005

  

可能重复:
  Using regular expression within a stored procedure

我需要验证一个字符串,该字符串不应包含小写字母和特殊符号。我使用下面的查询,使用这个我能找到特殊的符号,无法找到小写。请建议最佳方式。

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

2 个答案:

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