0

如何查看 DB2 SQL 查询中的文本字段是否为非数字?

我在表中有一个文本字段列,我只想查询 100% 数字的行。

4

4 回答 4

1

假设该字段长 10 位(如我的),这将是解决方案。

WHERE
  (  
     SUBSTRING(ID_NUM,1,1,OCTETS) BETWEEN '0' AND '9'
  OR SUBSTRING(ID_NUM,2,1,OCTETS) BETWEEN '0' AND '9'
  OR SUBSTRING(ID_NUM,3,1,OCTETS) BETWEEN '0' AND '9'
  OR SUBSTRING(ID_NUM,4,1,OCTETS) BETWEEN '0' AND '9'
  OR SUBSTRING(ID_NUM,5,1,OCTETS) BETWEEN '0' AND '9'
  OR SUBSTRING(ID_NUM,6,1,OCTETS) BETWEEN '0' AND '9'
  OR SUBSTRING(ID_NUM,7,1,OCTETS) BETWEEN '0' AND '9'
  OR SUBSTRING(ID_NUM,8,1,OCTETS) BETWEEN '0' AND '9'
  OR SUBSTRING(ID_NUM,9,1,OCTETS) BETWEEN '0' AND '9'
  OR SUBSTRING(ID_NUM,10,1,OCTETS)BETWEEN '0' AND '9'
  )
于 2012-08-16T19:38:16.787 回答
0

来自: http ://db2portal.blogspot.com.es/2006/03/returning-only-numeric-data.html的智能解决方案:

SELECT *
FROM TABLENAME
WHERE UCASE(VAR) = LCASE(VAR);

(您还应该检查不包含特殊字符,如-, ., (, ... )

另一个:

SELECT *
FROM TABLENAME
WHERE TRANSLATE(VAR4,'##########','1234567890') = '####'
;

对我来说最好的:

SELECT *
FROM Table
WHERE TRANSLATE(Field,
' ',
'0123456789,. '
) = ''
AND Field <> ''
于 2012-08-16T20:39:59.257 回答
0

我发现此查询可以更好地识别非数字列。

select  a.* from table a where (substring(testcol,1,1) 
not in ('1','2','3','4','5','6','7','8','9','0') 
or substring(testcol,2,1) not  in ('1','2','3','4','5','6','7','8','9','0') 
or substring(testcol ,3,1) not in ('1','2','3','4','5','6','7','8','9','0') 
or substring(testcol,4,1) not in ('1','2','3','4','5','6','7','8','9','0') 
or substring(testcol,5,1) not in ('1','2','3','4','5','6','7','8','9','0') 
or substring(testcol,6,1) not in ('1','2','3','4','5','6','7','8','9','0') 
or substring(testcol,7,1) not in ('1','2','3','4','5','6','7','8','9','0') 
or substring(testcol ,8,1) not in ('1','2','3','4','5','6','7','8','9','0')) 
于 2015-02-05T16:49:44.627 回答
-1

从 mytable 中选择 myfield where isumeric(myfield)

于 2012-08-16T19:08:12.997 回答