2017-02-22 98 views
0

Как бы мне найти, если первые четыре буквы строки содержали только буквы (верхний или нижний регистр?)Проверьте начальные символы в строке буквы с помощью SQL

Я попытался

  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' 

но выход «это весь текст, не номера в здесь»

Спасибо за любую помощь

+3

это SQL-сервер? –

ответ

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'; 
+0

Это сделало - спасибо за вашу помощь! – Dough