小编典典

在T-SQL LIKE条件下重复字符

sql

问题:
VARCHAR变量(或列)的值限制为数字和ASCI字符,但允许变量长度。
该脚本不会产生所需的结果:

declare @var as VARCHAR (150)
select @var = '123ABC'

if (@var LIKE '[a-zA-Z0-9]{0,150}')
    print 'OK'
else
    print 'Not OK'

有人知道该怎么做吗?


阅读 172

收藏
2021-04-28

共1个答案

小编典典

您可以使用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'
2021-04-28