2009-09-03 6 views
0

мне нужен запрос SQL, чтобы дать мне следующее:Как выбрать значения столбцов, которые бросают ошибку, если приведение к новому типу

Все значения в столбце типа VARCHAR (50), который не будет конвертировать или выдавать ошибку, если лить/преобразовать в int.

E.g.

строка 1: '1'

строка 2: '2'

строка 3: '3a'

строка 4: '4,5'

мне нужна строка 3 .. ... но есть десятки тысяч строк.

Спасибо!

+0

Возможно, вы можете использовать регулярные выражения для выбора значений, содержащих символы, отличные от числа 0-9? – Aziz

ответ

4

http://msdn.microsoft.com/en-us/library/aa933213(SQL.80).aspx

например,

SELECT * WHERE ISNUMERIC(column)=1 

Edit: На самом деле, это не совсем сократить его, если вы хотите точно Int только. Попробуйте это вместо этого. Если вам нужен только интервал int, то также запустите проверку диапазона (чувствуя себя немного ленивым на данный момент).

SELECT * 
WHERE 
     ISNUMERIC(column)=1 
     OR (CEILING(CONVERT(float, column))!=FLOOR(CONVERT(float, column))) 
+0

к сожалению, что позволяет плавать значения через, им жаль, если мой пример вводит в заблуждение, но мне нужно проверить, конвертируется ли в целое число. – andrej351

+0

Да. Дайте второй вихрь. – hythlodayr

+0

Круто спасибо, если вы измените его на ISNUMERIC (столбец) <> 1, он также поймает значения с плавающей запятой. Ура! – andrej351