Выберите только целые числа из столбца char, используя SQL Server

Как написать инструкцию select, чтобы выбрать только целые числа (и не более того) из столбца char в SQL Server. Например, мое имя таблицы – POWDER с двумя столбцами, ID (int) и Name (char (5))

ID Name -- ---------- 1 AXF22 2 HYWWW 3 24680 4 8YUH8 5 96635 

Я хочу иметь возможность выбирать только те строки, которые содержат целое число, и не более того (ID 3 и ID 5 в этом примере)

Если я попробую:

 SELECT * FROM POWDER WHERE Name LIKE '[0-9]%' 

… он вернется:

 ID Name -- ---------- 3 24680 4 8YUH8 5 96635 

Любые идеи о том, как получить строки, содержащие только целые числа?

 SELECT * FROM POWDER WHERE IsNumeric(Name) = 1 

IsNumeric возвращает 1 для некоторых других символов, которые действительны в числах, таких как + и – и $, но для вашего ввода вы должны быть в порядке.

Попробуй это:

SELECT * FROM Таблица WHERE Название LIKE '[0-9] %%'

Чтобы избежать проблем с ISNUMERIC и всех пробелов, -, +,. и т. д., используйте тот факт, что столбец char (5)

 SELECT * FROM POWDER WHERE Name LIKE '[0-9][0-9][0-9][0-9][0-9]' 

Изменить: для любого количества символов. Двойной негатив …

 SELECT * FROM POWDER WHERE Name NOT LIKE '%[^0-9]%' 

Используйте положительные и отрицательные проверки, чтобы убедиться, что у нас есть целое число: оно должно содержать цифру. Разрешены только цифры и пробелы. Между цифрами нет пробелов.

 SELECT * FROM POWDER WHERE Name LIKE '%[0-9]%' AND Name NOT LIKE '%[^0-9 ]%' AND Name NOT LIKE '%[0-9]% %[0-9]%' 

ВЫБЕРИТЕ * ИЗ ПОРОШОК
ГДЕ Имя patindex ('% [az]%', name)! = 0

Последний – лучший, вид работ действительно очень хорошо.

 SELECT * FROM POWDER WHERE Name LIKE '%[0-9]%' AND Name NOT LIKE '%[^0-9 ]%' AND Name NOT LIKE '%[0-9]% %[0-9]%' 
Давайте будем гением компьютера.