где не dataype sql

#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 ).