#sql #sql-server #int #where
#sql #sql-сервер #int #where-предложение
Вопрос:
Я пытаюсь отфильтровать некоторые данные — у меня есть столбец, который выглядит так, как будто это в основном smallint / int. Могу ли я в любом случае запустить оператор where, чтобы указать, где не int или где не small int??
Microsoft SQL Server manager.
Комментарии:
1. Пожалуйста, предоставьте образцы данных, желаемые результаты и тег базы данных. Вы можете просто посмотреть на тип столбца, чтобы увидеть, каков его тип. Тип не меняется от строки к строке.
2. В SQL столбец представляет собой только один тип данных. Однако вы могли бы легко отфильтровать, является ли число большим или меньшим.
3. @jarlh Microsoft SQL server manager.
4. наугад
WHERE TRY_CONVERT(smallint,YourColumn) IS NULL AND YourColumn IS NOT NULL
?5. Просто примените минимальный / максимальный диапазон типа данных, например
where column between -32768 to 32767
для smallint
Ответ №1:
Если вам нужно предложение where, которое может сообщить вам, содержит ли столбец информацию, которая не может быть преобразована в int
или smallint
, вы можете использовать try_cast
:
SELECT *
FROM <TableName>
WHERE TRY_CAST(<ColumnName> AS Int) IS NULL
Вы можете изменить int
на smallint
, чтобы получить значения, которые не могут быть преобразованы в smallint
, но могут быть преобразованы в int
.
Не забудьте заменить <TableName>
и <ColumnName>
на имена соответствующей таблицы и столбца.
Try_Cast
Встроенная функция вернет null, если значение в <ColumnName>
равно null или если оно не может быть преобразовано в int
(и поскольку все smallint
значения также могут быть преобразованы в int
, оно также не может быть преобразовано в smallint
).