检查字符串中的前导字符是否是使用SQL的字母

时间:2017-02-22 15:10:19

标签: sql string validation

如何找到一个字符串的前四个字母只包含字母(大写或小写?)

我试过了

            DECLARE @someString VARCHAR(40) = 'B331hBlahBlahBlah'
            IF(SUBSTRING(@someString, 1, 4) LIKE '[A-Za-z]%') 
                print 'this is all text, no numbers in here'
            else
                print 'this string contains numbers'

但是输出是'这是所有文字,这里没有数字'

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

您需要为每个角色重复模式:

        DECLARE @someString VARCHAR(40) = 'B331hBlahBlahBlah';

        IF @someString LIKE '[A-Za-z][A-Za-z][A-Za-z][A-Za-z]%') 
            PRINT 'this is all text, no numbers in here';
        ELSE
            PRINT 'this string contains numbers';

您的版本仅测试第一个字符。其余的与通配符匹配。

此外,通配符不需要substring() - 一个或另一个,但两者都是矫枉过正。

更准确的再现 - 基于PRINT消息 - 将是:

        DECLARE @someString VARCHAR(40) = 'B331hBlahBlahBlah';

        IF LEFT(@someString, 4) LIKE '%[0-9]%') 
            PRINT 'this string contains numbers';
        ELSE
            PRINT 'this is all text, no numbers in here';