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

isnumeric(myfield) の mytable から myfield を選択

于 2012-08-16T19:08:12.997 に答える