问题: 将VARCHAR变量(或列)的值限制为数字和ASCI字符,但允许变量长度。 该脚本不会产生所需的结果:
VARCHAR
declare @var as VARCHAR (150) select @var = '123ABC' if (@var LIKE '[a-zA-Z0-9]{0,150}') print 'OK' else print 'Not OK'
有人知道该怎么做吗?
您可以使用not克拉^和一个NOT LIKE表达式来执行此操作。
因此,您说,这里不像非字母数字;)这适用于标准数字和字符:
declare @var as VARCHAR (150) select @var = '123ABC' if (@var NOT LIKE '%[^a-zA-Z0-9]%') print 'OK' else print 'Not OK'
编辑:感谢Martin的排序规则提示,如果您希望像媒体这样的字符被视为非字母数字,请在COLLATE中添加如下
declare @var as VARCHAR (150) select @var = '123ABC媒' if (@var NOT LIKE '%[^a-zA-Z0-9]%' COLLATE Latin1_General_BIN ) print 'OK' else print 'Not OK'