仅选择具有字符的列中的整数数据

时间:2013-08-12 15:05:29

标签: sql sql-server-2008 tsql

我正在尝试编写一个查询,它将选择仅包含整数数据的项目,例如:019280498而不是0129830INK。这些是产品数据库中的sku,我目前的解决方案是这样的:

列名称为 SKU

SELECT *
FROM mydb
WHERE SKU not like '%a%' or SKU not like '%b%' or SKU not like '%c%' ..... or SKU not like '%z%'

这只返回没有字符的值。然而,它不喜欢我所写的内容,我确信有一种更优雅的方式来执行它。

3 个答案:

答案 0 :(得分:4)

将原始方法与like一起使用,即可:

SELECT *
FROM mydb
WHERE SKU not like '%[^0-9]%';

这样做的好处是'3e9'之类的表达式不被接受为数值。

或者,如果您要特别使用字母字符:

SELECT *
FROM mydb
WHERE SKU not like '%[a-z]%';  -- or for case sensitive collations '%[a-zA-Z]%'

答案 1 :(得分:3)

可以使用IsNumeric()函数。

Select *
from mydb
Where IsNumeric(sku) = 0x1

答案 2 :(得分:0)

SELECT DISTINCT Pincode 
FROM ps_all_india_pin_code 
WHERE Pincode between '100000' and '999999'