Выберите только целые числа из столбца char с помощью SQL Server - PullRequest
6 голосов
/ 23 октября 2009

Как мне написать оператор выбора для выбора только целых чисел (и ничего более) из столбца char в SQL Server. Например, моя таблица называется POWDER с 2 столбцами, 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

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

Ответы [ 6 ]

13 голосов
/ 23 октября 2009
SELECT * FROM POWDER WHERE IsNumeric(Name) = 1

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

4 голосов
/ 13 декабря 2012

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

SELECT * FROM Table, ГДЕ ИМЯ LIKE '[0-9] %%'

1 голос
/ 12 мая 2010

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

SELECT *
  FROM POWDER 
 WHERE Name LIKE '%[0-9]%'
   AND Name NOT LIKE '%[^0-9 ]%'
   AND Name NOT LIKE '%[0-9]% %[0-9]%'
1 голос
/ 23 октября 2009

Чтобы избежать проблем с 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]%'
0 голосов
/ 26 июня 2013

Попробуйте:

SELECT * 
FROM POWDER   
WHERE Name patindex ('%[a-z]%',name) != 0
0 голосов
/ 30 августа 2012

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

SELECT *   FROM POWDER   
  WHERE Name LIKE '%[0-9]%'    
       AND Name NOT LIKE '%[^0-9 ]%'    
       AND Name NOT LIKE '%[0-9]% %[0-9]%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...