如何找到一个字符串的前四个字母只包含字母(大写或小写?)
我试过了
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'
但是输出是'这是所有文字,这里没有数字'
感谢您的帮助
答案 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';