Есть ли легкий способ добраться, если последовательность - целое число (состоит только из цифр) в MS SQL 2005?
Спасибо за помощь.
Функция ISNUMIC возвращает, является ли строка чиной, но вернется True для неигольников.
Итак, вы можете использовать:
WHERE ISNUMERIC(str) AND str NOT LIKE '%.%' AND str NOT LIKE '%e%' AND str NOT LIKE '%-%'
Стандартная функция T-SQL ISNUMERIC (выражение) Определяет, является ли выражение действительным числовым типом.
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
Можно использовать оператор LIKE:
WHERE str NOT LIKE '%[^0-9]%'
Это немного сложно гарантировать, что значение будет соответствовать 4 байтому целым числу.
Поскольку вы используете 2005 - один способ - попытаться преобразовать значение в блоке попробовать / Catch. Это был бы лучший способ застраховать, что это на самом деле INT. Конечно, вам нужно обрабатывать случаи, когда он не находится в блоке Catch в соответствии с вашими требованиями.
Еще один способ просто тестировать только «цифры», так это:
, где Strval не относится к «% [^ 0-9]%»
, что будет пропустить -25. а также разрешить '99999999999999999999' Таким образом, вам может потребоваться включить дополнительные критерии с этим методом.