Как отфильтровать запрос, чтобы показать только результаты, в которых столбец нельзя преобразовать в int - PullRequest
2 голосов
/ 10 ноября 2010

У меня есть таблица со столбцом varchar со значениями, которые должны быть целыми числами (устаревшее приложение, созданное задолго до того, как я попал в компанию).

Мне нужно получить список всех записей, которые не могут бытьпреобразован в целые числа, чтобы исправить их.

Как я могу это сделать?

Ответы [ 4 ]

4 голосов
/ 10 ноября 2010

Простой способ:

select MyColumn
from MyTable
where isnumeric(MyColumn) = 0

Предполагается, что вы согласны с потерей десятичных знаков при конвертации.

3 голосов
/ 10 ноября 2010

Если дробные или нестандартные представления (такие как 1.3 или 1E8) могут считаться «конвертируемыми в int» для ваших целей, тогда используйте:

SELECT  *
FROM    mytable
WHERE   IsNumeric(myfield) = 0
2 голосов
/ 10 ноября 2010

ISNUMERIC просто не обрезает его для пустых строк (= ноль) или десятичных дробей.

SELECT * FROM MyTable WHERE MyColumn LIKE '%[^0-9]%'

Этот минус ищет все, что имеет символы вне диапазона 0-9. Вы дали отрицательные целые числа?

1 голос
/ 10 ноября 2010

Вы можете попытаться использовать регулярное выражение. Не уверен, какую СУБД вы используете, но что-то подобное может работать для вашей БД. Он должен найти записи с символами (заглавными и строчными) в some_column.

ВЫБРАТЬ * ИЗ НЕКОТОРЫХ ГДЕ some_column ПОХОЖИЕ НА ‘% [A-Z | а-г]%»;

...