2013-12-19 7 views
-4

Я пытаюсь подсчитать количество записей в столбце лица, которое находится между 0 и 25000. В наборе данных есть Лицо как символ (20), поэтому мне нужно было преобразовать его в целое число, прежде чем создавать какие-либо логические выражение. Вот мой код ниже:преобразование varchar в integer

SELECT count(*) 
FROM tablename 
WHERE cast(face AS integer) > 0 and cast(face AS integer) <=25000; 

Я получаю сообщение об ошибке, говоря

Конверсия удалось при преобразовании значения VARCHAR «0.0» для типа данных Int.

колонка Face содержит нулевые значения и записи, как «0.0» и «0,0000»

Я посмотрел в Интернете и не нашел ничего полезного о том, как преобразовать VARCHAR в целое. Помогите кому-нибудь?

+3

'Я посмотрел в Интернете и не нашел ничего полезного о том, как конвертировать VARCHAR to integer.' Nope ... – reto

+3

Почему, почему, зачем вы храните целые числа в столбце char (20)? Кроме того, поиск не появился? В самом деле? Я предполагаю, что вы имеете в виду, когда вы проверили [все 508 000 результатов этого поиска] (https://www.google.com/search?q=convert+varchar+to+int+sql+server)? Или даже ближе к дому, [найденные здесь результаты 1043] (http://stackoverflow.com/search?q=convert+varchar+to+int+sql-server)? –

+0

@reto Я бы согласился и предположил, что OP выглядит немного сложнее. – Zane

ответ

1

Если столбец имеет десятичной точки в нем, ваша ошибка пытается интерпретировать его как целое:

select count(*) 
from tablename 
where cast(face AS float) > 0.0 and cast(face AS float) <= 25000.0 
+0

спасибо, что это сработало – user3120288

0

ли Face всегда гарантированно числовая? Надеюсь, что такой подход или какой-либо подход не будут работать очень хорошо для вас.

Поскольку у вас есть десятичные значения, лучше всего, чтобы бросить его в качестве float, а затем сделать ваше сравнение:

SELECT count(*) 
FROM tablename 
WHERE cast(face AS float)> 0 and cast(face AS float) <=25000; 
Смежные вопросы