我正在處理某些事情。我得檢查一個字符串進行驗證。這個字符串有一個國家代碼和一個大學代碼(來自他們自己在數據庫中的表格)和一堆數字。現在我需要驗證這個字符串。我需要檢查國家代碼和大學代碼上的這個字符串,以及它是否包含數字yes或no。在Oracle中檢查字符串中的數字和字符11G
此刻我已經嘗試了很多東西。我試圖使用很多if語句,regexp_like,instr,substr,select語句和其他語句。但是我無法檢查字符串是否爲國家和大學代碼(以及它是否具有匹配的數字)。
我此刻的代碼如下:
create or replace function checkForCorrectness (
isin varchar2)
return integer
as
isCorrect integer := 0;
checkISIN varchar2(50);
checkCountryCode country.code%type;
checkUniversityCode university.code%type;
e_onbekendeLandCode exception;
e_onbekendeUniCode exception;
e_lengteNummer exception;
begin
--checkISIN := isin;
/*
if checkISIN like '%NL%'
then dbms_output.put_line('Beschikt over een landcode');
if checkISIN like '%KTU%'
then dbms_output.put_line('Beschikt over een universiteit code');
if checkISIN like ''
then dbms_output.put_line('Beschikt over een nummerreeks');
end if;
end if;
end if;
*/
--select isin
--into checkISIN
--from dual
--where regexp_like(checkISIN, '^[[:digit:]]+$');
isin := regexp_like(isin, '[[:digit:]]');
dbms_output.put_line(checkISIN);
return isCorrect;
exception
when e_lengteNummer
then dbms_output.put_line('Foutmelding: Nummereeks is kleiner dan 9');
when e_onbekendeLandCode
then dbms_output.put_line('Foutmelding: Landcode is niet geldig of bestaat niet');
when e_onbekendeUniCode
then dbms_output.put_line('Foutmelding: Universiteit code is niet geldig of bestaat niet');
end checkForCorrectness;
/
show errors function checkForCorrectness
/*
begin
dbms_output.put_line(checkForCorrectness('NL 4633 4809 KTU'));
end;
此刻我很迷茫,我不知道該怎麼辦了。我希望你們中的一些人能夠幫助我。
長話短說。我得到這個校驗值(還有更多):
ASSERT_EQUALS(checkForCorrectness('NL 4633 4809 KTU'),1);
ASSERT_EQUALS(checkForCorrectness('NL 4954 2537 7808 MSM'),1);
輸入是包含國家代碼(NL),數字(4633 4809)和一所大學的代碼(KTU)的字符串。如果結果爲真或驗證,則返回1 else 0.
我希望我的問題不太含糊。
如果有人能向我解釋什麼樣的功能,我需要做的步驟/帶,將是真棒
在此先感謝
是否所有國家代碼的兩個字符?所有的大學代碼都是三個字符?國家代碼和大學代碼之間是否有空格和數字以外的任何字符?對這些組裝方式有任何限制(即「NL 4 9 5 425 MSM」有效)?或者數字總是以4組的形式出現?您是否試圖根據查找表驗證國家和大學代碼?或者只是檢查他們分別是兩個和三個字母代碼? –
國家和大學代碼可能長於2或3個字符。數字是4對必需的(直到不可能)。我不知道檢查國家和大學代碼的最佳方法是什麼,但我想從他們自己的表中檢查這兩個(如果可能的話) –
好的。那麼,你想要執行的規則究竟是什麼呢?一個或多個字母,後跟一個空格,後跟一個或多個四個連續數字組,後跟一個空格,後面跟一個或多個字母?國家代碼是否可以通過閱讀第一空間解析出來,並且可以通過從最後一個空間讀取解析出大學代碼? –