2009-10-29 113 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