當前位置:首頁 » 編程語言 » oraclesql判斷是否為數字
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oraclesql判斷是否為數字

發布時間: 2022-08-20 20:06:47

A. sql oracle 判斷為數字

SELECT * FROM ITAB WHERE ISNUMERIC(FIELDNAME)>0
函數 ISNUMERIC(col1)>0 是判斷欄位值是否是數值的函數,若是整數、浮點等數字返回是「1」

B. oracle sql字元串轉數字問題

1.將字元串類型轉換為數字類型。此方法使用tonumber()直接轉換。具體語法是tonumber(STR)。

C. oracle如何判斷一個數是不是整數呢比如3.000和3.100,如何篩選出來3.100

select * from table where int-floor(int)>0 --int就是你的表欄位,floor(int)就是取整數,等同於3.100-3>0

D. 在oracle中,如何用一條select語句查詢欄位中非純數字值

--1.正則判斷,適用於10g以上版本
--非正整數
select欄位from表whereregexp_replace(欄位,'d','')isnotnull;
--非數值類型
select欄位from表whereregexp_replace(欄位,'^[-+]?d+(.d+)?$','')isnotnull;
--2.自定義函數,判斷非值類型
(colvarchar2)returnintegeris
inumber;
begin
i:=to_number(col);
return1;
exception
whenothersthen
return0;
end;
select欄位from表whereisnumber(欄位)=0;

E. oracle判斷字元串是否為數字

1、通過ASCII碼判斷是否數字,介於[48, 57]之間,(ascii('0') = 48, ascii('9') = '57')
2、調用cast函數嘗試強制轉換成NUMERIC或NUMBER,不是合法數字串即拋異常
3、調用translate函數,剔除所有[0-9]數字後,看是否為空串
4、調用正則表達式,進行模式匹配(10g版本新加入的功能)

--通過ASCII碼判斷是否數字,介於[48,57]之間,(ascii('0')=48,ascii('9')='57')
DECLARE
strVARCHAR2(10):='123a';
valNUMERIC(10);
iint;
kint;
flagBOOLEAN;
BEGIN
flag:=TRUE;
foriin1..10loop--新密碼是否6位數字
k:=ascii(substr(str,i,1));
ifk<48ork>57THEN
flag:=FALSE;
endif;
endLOOP;

IFflag=trueTHEN
dbms_output.put_line(str||'是[0-9]的數字序列');
ELSE
dbms_output.put_line(str||'不是[0-9]的數字序列');
ENDIF;
END;

--調用cast函數嘗試強制轉換成NUMERIC或NUMBER,不是合法數字串即拋異常
DECLARE
strVARCHAR2(10):='123';
valNUMERIC(10);
BEGIN
val:=CAST(strASNUMERIC);
dbms_output.put_line(str||'是[0-9]的數字序列');
EXCEPTION
WHENvalue_errorTHEN--字元串轉實數錯誤
--dbms_output.put_line(SQLCODE||','||SQLERRM);
dbms_output.put_line(str||'不是[0-9]的數字序列');
END;

--調用translate函數,剔除所有[0-9]數字後,看是否為空串
DECLARE
strVARCHAR2(10):='123abc';
BEGIN
IFreplace(translate(str,'0123456789','0'),'0','')ISNULLTHEN
dbms_output.put_line(str||'是[0-9]的數字序列');
ELSE
dbms_output.put_line(str||'不是[0-9]的數字序列');
ENDIF;
END;

--調用正則表達式,進行模式匹配(10g版本新加入的功能)
SELECT*
FROMal
WHEREregexp_like('1234','^[[:digit:]]+$');

--從任意字元串中提取數字串(調用2次translate函數)。
--假定初始串為str。首先將str中數字全部替換為空格,輸出記為str2;
--其次,對每個在str中出現的任意str2串中字元,如果是str2的首字元則替換為空格,其它字元則全部剔除
DECLARE
--strVARCHAR2(100):='護照01浙江23崑山4蘇3';
strVARCHAR2(100):='護照浙江崑山蘇4';
retVARCHAR2(10);
BEGIN
ret:=TRIM(TRANSLATE(str,trim(TRANSLATE(str,'1234567890','')),''));
dbms_output.put_line(ret);
END;

F. 如何在oracle中用SQL語句比較字元串型和數字型

Oracle比較字元串是根據ASCII碼來的,第一個字母的ASCII大小比較如果相等再比較下一個,類推。

字元串和數字進行操作是會報異常的,因為類型不一樣不能進行比較。
Oracle在執行SQL的時候有些時候會自動轉換,比如:
select * from chan_customer cc where cc.customer_id = '1';
即使customer_id是數字型的也可以查出來,但是Oracle有區分字元和數字
就是通過加不加單引號來區分。

G. Oracle sql語句number與varchar2類型

使select 'a4000000'-1000000 from al不報錯
那你要什麼樣的結果呢?

因為你別的行, 可能是正確的.
到了這一行 數據不對, 你又不希望抱錯。
那麼你是不是希望, 如果 遇到非法字元了, 結果就為 NULL 或者 -1 之類的?

如果是這個情況。
你可以考慮用 CASE WHEN 的處理機制
也就是
CASE WHEN 字元是合法數字 THEN 字元1 - 數字
ELSE NULL ( 或者 -1 ) END
來進行處理。

至於 字元是合法數字 的判斷。
SQL Server 裡面比較省事, 直接有個 ISNUMERIC 函數可以判斷。

Oracle 沒有 直接的函數。
不過可以通過 REGEXP_LIKE 進行 正則表達式的檢查。
來判斷 字元是否是合法的數字。

H. oracle判斷是否是數字

可以使用正則表達式的方式來判斷。
REGEXP_LIKE( 欄位 , '(^[+-]?\d{0,}\.?\d{0,}$)'
來判斷 是否是數字

SQL> SELECT NULL
2 FROM al
3 WHERE REGEXP_LIKE(NULL,'(^[+-]?\d{0,}\.?\d{0,}$)');

未選定行

SQL>
SQL> SELECT 'Abc'
2 FROM al
3 WHERE REGEXP_LIKE('Abc','(^[+-]?\d{0,}\.?\d{0,}$)');

未選定行

SQL>
SQL> SELECT '100'
2 FROM al
3 WHERE REGEXP_LIKE('100','(^[+-]?\d{0,}\.?\d{0,}$)');

'10
---
100

SQL>
SQL> SELECT '-100'
2 FROM al
3 WHERE REGEXP_LIKE('-100','(^[+-]?\d{0,}\.?\d{0,}$)');

'-10
----
-100

SQL>
SQL> SELECT '.01'
2 FROM al
3 WHERE REGEXP_LIKE('.01','(^[+-]?\d{0,}\.?\d{0,}$)');

'.0
---
.01

SQL>
SQL> SELECT '1995-10-1'
2 FROM al
3 WHERE REGEXP_LIKE('1995-10-1','(^[+-]?\d{0,}\.?\d{0,}$)');

未選定行

SQL>
SQL> SELECT '1/20/95'
2 FROM al
3 WHERE REGEXP_LIKE('1/20/95','(^[+-]?\d{0,}\.?\d{0,}$)');

未選定行

I. sql判斷是否為數字

不知道樓主的意思是不是要判斷一個欄位是否為純數字還是說是否包含數字?
可以用oracle自帶的正則表達式函數regexp_replace把數字全部取出來,然後計算數字的長度是否等於這個欄位的長度,如果等於的話說明這個值全部是數字,如果不等於的話說明值裡麵包含非數字,測試語句如下:
select(regexp_replace('lss12345',
'[^0-9]'))
from
al;---取出值裡面的全部數字
select
length('lss12345'),length(regexp_replace('lss12345',
'[^0-9]'))
from
al;
---查詢出欄位的長度和欄位內數字的長度
select*
from
al
where
length('lss12345')
=
length(regexp_replace('lss12345',
'[^0-9]'))
;
----查詢這個欄位所有的純數字列

J. oracle如何判斷某個欄位的值是不是數字

1、創建測試表,

create table test_isnum(id number, value varchar2(20));