2009-10-29 66 views
0

使用SQL Server 2005如何筛选列?

我要过滤的列,其中列值不等于数字

表1

Status 

010203 
Absent 
231415 
Ramesh 
Suresh 

..., 

我想从状态栏只得到名称,如

试过查询

Select Status from table1 where status <> 'absent' and status <> numecivalue 

如何提到的状态<> numericvalue

期望输出

Table 

Status 

Ramesh 
Suresh 
..., 

需要查询的帮助。

回答

2

用途:

SELECT t.status 
    FROM table1 t 
WHERE t.status != 'absent' 
    AND ISNUMERIC(t.status) != 1 

参考:ISNUMERIC

0
SELECT 
    status 
FROM 
    table1 
WHERE 
    status <> 'absent' AND 
    ISNUMERIC(status) <> 1 
0

看一看这个weblos ..............

http://weblogs.sqlteam.com/mladenp/archive/2007/10/18/SQL-Server-Filtering-Numeric-data-from-a-character-based-column.aspx

CREATE FUNCTION dbo.IsNumericEx(@value nvarchar(max)) 
RETURNS BIT 
AS 
BEGIN 
     DECLARE @isInt BIT 

     SELECT @isInt = 1 
     WHERE @value NOT LIKE '%[^0-9.-]%' 
       AND LEN(REPLACE(@value, '.', '')) >= LEN(@value) - 1 
       AND CHARINDEX('-', @value) IN (0, 1) 
       AND CHARINDEX('-', @value, 2) = 0 

     RETURN ISNULL(@isInt, 0) 
END 
GO 

DECLARE @t1 TABLE (title varchar(20)) 
INSERT INTO @t1 
SELECT '123d456' UNION ALL 
SELECT '12 3456' UNION ALL 
SELECT '123456' UNION ALL 
SELECT '1234-56' UNION ALL 
SELECT '123456-' UNION ALL 
SELECT '-123456' UNION ALL 
SELECT '-123-456' UNION ALL 
SELECT 'dddfaf56' UNION ALL 
SELECT '5532.673' UNION ALL 
SELECT '5532673.' UNION ALL 
SELECT '.5532.673' 

SELECT * 
FROM  @t1 
WHERE dbo.IsNumericEx(title) = 0 

SELECT * 
FROM  @t1 
WHERE dbo.IsNumericEx(title) = 1 

GO 
DROP FUNCTION dbo.IsNumericEx 
+1

如果您发布的代码,无论是T-SQL或什么的,请使用编辑器工具栏按钮的代码(010 101),以它们格式化为代码,使他们很好的可读性,将得到语法突出! – 2009-10-29 06:01:51