Как добраться, если последовательность - число в T-SQL

Есть ли легкий способ добраться, если последовательность - целое число (состоит только из цифр) в MS SQL 2005?

Спасибо за помощь.

13
задан StuffHappens 21 January 2010 в 13:42
поделиться

5 ответов

Функция ISNUMIC возвращает, является ли строка чиной, но вернется True для неигольников.

Итак, вы можете использовать:

WHERE ISNUMERIC(str) AND str NOT LIKE '%.%' AND str NOT LIKE '%e%' AND str NOT LIKE '%-%'
15
ответ дан 1 December 2019 в 18:55
поделиться

Стандартная функция T-SQL ISNUMERIC (выражение) Определяет, является ли выражение действительным числовым типом.

-1
ответ дан 1 December 2019 в 18:55
поделиться

См. :

CREATE Function dbo.IsInteger(@Value VarChar(18))
Returns Bit
As 
Begin

  Return IsNull(
 (Select Case When CharIndex('.', @Value) > 0 
              Then Case When Convert(int, ParseName(@Value, 1)) <> 0
                        Then 0
                        Else 1
                        End
              Else 1
              End
      Where IsNumeric(@Value + 'e0') = 1), 0)   

End
2
ответ дан 1 December 2019 в 18:55
поделиться

Можно использовать оператор LIKE:

WHERE str NOT LIKE '%[^0-9]%'
7
ответ дан 1 December 2019 в 18:55
поделиться

Это немного сложно гарантировать, что значение будет соответствовать 4 байтому целым числу.

Поскольку вы используете 2005 - один способ - попытаться преобразовать значение в блоке попробовать / Catch. Это был бы лучший способ застраховать, что это на самом деле INT. Конечно, вам нужно обрабатывать случаи, когда он не находится в блоке Catch в соответствии с вашими требованиями.

Еще один способ просто тестировать только «цифры», так это:

, где Strval не относится к «% [^ 0-9]%»

, что будет пропустить -25. а также разрешить '99999999999999999999' Таким образом, вам может потребоваться включить дополнительные критерии с этим методом.

1
ответ дан 1 December 2019 в 18:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: