1、創(chuàng)建測試表,
朔城網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)公司成立與2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
create table test_isnum(id number, value varchar2(20));
2、插入測試數(shù)據(jù),
insert into test_isnum values(1,'a');
insert into test_isnum values(2,329);
insert into test_isnum values(4,'15');
insert into test_isnum values(6,'2c');
commit;
3、查詢表中所有記錄,select t.*, rowid from test_isnum t,
4、編寫sql,判斷value字段,記錄為數(shù)字的內(nèi)容,
select t.*,
?case
? ?when not regexp_like(value, '\D') then
? ? '是'
? ?else
? ? '否'
?end as "是否數(shù)字"
from test_isnum t;
select
count(主鍵)
,count(字段)
from
表
where
條件
如果兩個都為0,數(shù)據(jù)不存在,
如果前面不為0,后面為0,有數(shù)據(jù),但是那個字段為空。
用正則判斷把
select * from table1 where regexp_like(ziduan,'.*\d')0
只要有一個數(shù)字,就會被選出來。
1、通過ASCII碼判斷是否數(shù)字,介于[48, 57]之間,(ascii('0') = 48, ascii('9') = '57')
2、調(diào)用cast函數(shù)嘗試強制轉(zhuǎn)換成NUMERIC或NUMBER,不是合法數(shù)字串即拋異常
3、調(diào)用translate函數(shù),剔除所有[0-9]數(shù)字后,看是否為空串
4、調(diào)用正則表達式,進行模式匹配(10g版本新加入的功能)
--通過ASCII碼判斷是否數(shù)字,介于[48,?57]之間,(ascii('0')?=?48,?ascii('9')?=?'57')
DECLARE
str?????????????VARCHAR2(10)?:=?'123a';
val?????????????NUMERIC(10);
i???????????????int;
k???????????????int;
flag????????????BOOLEAN;
BEGIN
flag?:=?TRUE;
for?i?in?1..10?loop???--新密碼是否6位數(shù)字
k?:=?ascii(substr(str,?i,?1));
if?k??48?or?k??57?THEN
flag?:=?FALSE;
end?if;
end?LOOP;
IF?flag?=?true?THEN
dbms_output.put_line(str?||?'是[0-9]的數(shù)字序列');
ELSE
dbms_output.put_line(str?||?'不是[0-9]的數(shù)字序列');
END?IF;
END;
--?調(diào)用cast函數(shù)嘗試強制轉(zhuǎn)換成NUMERIC或NUMBER,不是合法數(shù)字串即拋異常
DECLARE
str????VARCHAR2(10)?:=?'123';
val????NUMERIC(10);
BEGIN
val?:=?CAST(str?AS?NUMERIC);
dbms_output.put_line(str?||?'是[0-9]的數(shù)字序列');
EXCEPTION
WHEN?value_error?THEN?--?字符串轉(zhuǎn)實數(shù)錯誤
--dbms_output.put_line(SQLCODE?||?',?'?||?SQLERRM);
dbms_output.put_line(str?||?'不是[0-9]的數(shù)字序列');
END;
--調(diào)用translate函數(shù),剔除所有[0-9]數(shù)字后,看是否為空串
DECLARE
str?VARCHAR2(10)?:=?'123abc';
BEGIN
IF?replace(translate(str,?'0123456789',?'0'),?'0',?'')?IS?NULL?THEN
dbms_output.put_line(str?||?'是[0-9]的數(shù)字序列');
ELSE
dbms_output.put_line(str?||?'不是[0-9]的數(shù)字序列');
END?IF;
END;
--調(diào)用正則表達式,進行模式匹配(10g版本新加入的功能)
SELECT?*
FROM?dual
WHERE?regexp_like('1234',?'^[[:digit:]]+$');
--從任意字符串中提取數(shù)字串(調(diào)用2次translate函數(shù))。
--假定初始串為str。首先將str中數(shù)字全部替換為空格,輸出記為str2;
--其次,對每個在str中出現(xiàn)的任意str2串中字符,如果是str2的首字符則替換為空格,其它字符則全部剔除
DECLARE
--str????VARCHAR2(100)?:=?'?護照01浙江2?????3昆?山4蘇?3';
str????VARCHAR2(100)?:=?'?護照浙江?????昆?山蘇?4';
ret????VARCHAR2(10);
BEGIN
ret?:=?TRIM(TRANSLATE(str,?trim(TRANSLATE(str,?'1234567890',?'??????????')),?'?'));
dbms_output.put_line(ret);
END;