oracle實際應用中經常碰到字元有效性判斷。
校驗單個字元是否為字母、數字、符號都比較容易,oracle提供的函式regexp_like使用正規表示式就可以完成。但是漢字就比較特殊,需要特別處理。
1、判斷字元是否為數字,v_char為待校驗字元(單個)
regexp_like(v_char, '(^[0-9]$)')
2、判斷字元是否為字母,v_char為待校驗字元(單個)
regexp_like(v_char, '(^[a-z]$)')
regexp_like(v_char, '(^[a-z]$)')
regexp_like(v_char, '(^[a-za-z]$)')
3、判斷字元是否為特殊符號,v_char為待校驗字元(單個)
regexp_like(v_char, '(^[()-]$)'),此正規表示式只能為()-,實際應用自行匹配
4、判斷字元是否為特殊符號,v_char為待校驗字元(單個)
漢字比較特殊,就不能直接比較。
在網上看到有些網友通過比較length和lengthb長度不同來判斷(length求得是字元長度,lengthb求得是位元組長度),但是沒有注意到全形字母a的length和lengthb長度不同但是明顯不是字元
查詢到漢字的unicode編碼範圍為4e00到9af5,可以將字元轉換為編碼進行判斷。
v_code := asciistr(v_char); --轉換成ascii字串
v_code := regexp_replace(v_code, '[^0-9a-za-z]'); --去除/,驗證是否漢字
if v_code >= '4e00' and v_code <= '9fa5' then
out_msg := '為漢字';
end if;
例子:判斷乙個字串中是否只包含漢字,數字,字母,-,(,)
function func_chinese(p_str in varchar2 -- 輸入的字串
) return varchar2 is
v_name varchar2(256);
v_code varchar2(256);
v_flag varchar2(32);
v_char varchar2(256);
out_msg varchar2(256);
begin
v_flag := 'true';
v_name := p_str;
--dbms_output.put_line(v_name);
for i in 1 .. length(v_name) loop
v_char := substr(v_name, i, 1); --取字元
--首先判斷是否數字,字母,下劃線,括號
if regexp_like(v_char, '(^[0-9a-za-z()-]$)') then
out_msg := '為數字字母()-';
--如果不是數字,字母,下劃線,括號
else
v_code := asciistr(v_char); --轉換成ascii字串
v_code := regexp_replace(v_code, '[^0-9a-za-z]'); --去除/,驗證是否漢字
--dbms_output.put_line(v_code);
if v_code >= '4e00' and v_code <= '9fa5' then
out_msg := '為漢字';
else
out_msg := '不為漢字';
v_flag := 'false';
end if;
end if;
--dbms_output.put_line(v_char || ' :' || out_msg);
end loop;
return v_flag;
end;
C 判斷json字串合法性
更簡單一點的,還是有點複雜,不太符合業務,發帖留念吧。感恩的心。bool isjsonillegal const char jsoncontent if p else break case if jsonstr.empty jsonstr.top else break case if jsonstr...
日期字串合法性js校驗
version 1.0.2009.05.13 auther heroying email heroying gmail.com isvaliddate date 方法 日期字串有效性檢測函式 日期字串的有效性指日期字串是否符合特定格式 本函式預設為yyyymmdd 以及是否是有效真實正確的日期。例如...
輸入合法性判斷 素數判斷
實現isprime 函式,引數為整數,要有異常處理。如果整數是素數,返回true,否則返回false。輸入格式 輸入乙個數 輸出格式 如果整數是素數,輸出 是素數 否則輸出 不是素數 如果輸入不滿足要求,輸出 輸入錯誤 輸入樣例 在這裡給出一組輸入。例如 11輸出樣例 在這裡給出相應的輸出。例如 是...