Oracle的身份证号仿真脱敏算法

创建仿真脱敏函数

CREATE OR REPLACE FUNCTION func_get_p_id RETURN VARCHAR2 
AS
  v_area VARCHAR2(6):='';
  v_year INTEGER:=0;
  v_month VARCHAR2(2):='';
  v_day VARCHAR2(2):='';
  v_sex VARCHAR2(3):='';
  v_personid VARCHAR2(20):='';
  --2022年中华人民共和国县以上行政区划代码
  --https://www.mca.gov.cn/mzsj/xzqh/2022/202201xzqh.html
  v_city RAW(18000):=utl_raw.cast_to_raw('110101110102110105110106110107110108110109110111110112110113110114110115110116110117110118110119120101120102120103120104120105120106120110120111120112120113120114120115120116120117120118120119130102130104130105130107130108130109130110130111130121130123130125130126130127130128130129130130130131130132130133130181130183130184130202130203130204130205130207130208130209130224130225130227130229130281130283130284130302130303130304130306130321130322130324130402130403130404130406130407130408130423130424130425130426130427130430130431130432130433130434130435130481130502130503130505130506130522130523130524130525130528130529130530130531130532130533130534130535130581130582130602130606130607130608130609130623130624130626130627130628130629130630130631130632130633130634130635130636130637130638130681130682130683130684130702130703130705130706130708130709130722130723130724130725130726130727130728130730130731130732130802130803130804130821130822130824130825130826130827130828130881130902130903130921130922130923130924130925130926130927130928130929130930130981130982130983130984131002131003131022131023131024131025131026131028131081131082131102131103131121131122131123131124131125131126131127131128131182140105140106140107140108140109140110140121140122140123140181140212140213140214140215140221140222140223140224140225140226140302140303140311140321140322140403140404140405140406140423140425140426140427140428140429140430140431140502140521140522140524140525140581140602140603140621140622140623140681140702140703140721140722140723140724140725140727140728140729140781140802140821140822140823140824140825140826140827140828140829140830140881140882140902140921140922140923140924140925140926140927140928140929140930140931140932140981141002141021141022141023141024141025141026141027141028141029141030141031141032141033141034141081141082141102141121141122141123141124141125141126141127141128141129141130141181141182150102150103150104150105150121150122150123150124150125150202150203150204150205150206150207150221150222150223150302150303150304150402150403150404150421150422150423150424150425150426150428150429150430150502150521150522150523150524150525150526150581150602150603150621150622150623150624150625150626150627150702150703150721150722150723150724150725150726150727150781150782150783150784150785150802150821150822150823150824150825150826150902150921150922150923150924150925150926150927150928150929150981152201152202152221152222152223152224152501152502152522152523152524152525152526152527152528152529152530152531152921152922152923210102210103210104210105210106210111210112210113210114210115210123210124210181210202210203210204210211210212210213210214210224210281210283210302210303210304210311210321210323210381210402210403210404210411210421210422210423210502210503210504210505210521210522210602210603210604210624210681210682210702210703210711210726210727210781210782210802210803210804210811210881210882210902210903210904210905210911210921210922211002211003211004211005211011211021211081211102211103211104211122211202211204211221211223211224211281211282211302211303211321211322211324211381211382211402211403211404211421211422211481220102220103220104220105220106220112220113220122220182220183220184220202220203220204220211220221220281220282220283220284220302220303220322220323220382220402220403220421220422220502220503220521220523220524220581220582220602220605220621220622220623220681220702220721220722220723220781220802220821220822220881220882222401222402222403222404222405222406222424222426230102230103230104230108230109230110230111230112230113230123230124230125230126230127230128230129230183230184230202230203230204230205230206230207230208230221230223230224230225230227230229230230230231230281230302230303230304230305230306230307230321230381230382230402230403230404230405230406230407230421230422230502230503230505230506230521230522230523230524230602230603230604230605230606230621230622230623230624230717230718230719230722230723230724230725230726230751230781230803230804230805230811230822230826230828230881230882230883230902230903230904230921231002231003231004231005231025231081231083231084231085231086231102231123231124231181231182231183231202231221231222231223231224231225231226231281231282231283232701232721232722310101310104310105310106310107310109310110310112310113310114310115310116310117310118310120310151320102320104320105320106320111320113320114320115320116320117320118320205320206320211320213320214320281320282320302320303320305320311320312320321320322320324320381320382320402320404320411320412320413320481320505320506320507320508320509320581320582320583320585320612320613320614320623320681320682320685320703320706320707320722320723320724320803320804320812320813320826320830320831320902320903320904320921320922320923320924320925320981321002321003321012321023321081321084321102321111321112321181321182321183321202321203321204321281321282321283321302321311321322321323321324330102330105330106330108330109330110330111330112330113330114330122330127330182330203330205330206330211330212330213330225330226330281330282330302330303330304330305330324330326330327330328330329330381330382330383330402330411330421330424330481330482330483330502330503330521330522330523330602330603330604330624330681330683330702330703330723330726330727330781330782330783330784330802330803330822330824330825330881330902330903330921330922331002331003331004331022331023331024331081331082331083331102331121331122331123331124331125331126331127331181340102340103340104340111340121340122340123340124340181340202340207340209340210340212340223340281340302340303340304340311340321340322340323340402340403340404340405340406340421340422340503340504340506340521340522340523340602340603340604340621340705340706340711340722340802340803340811340822340825340826340827340828340881340882341002341003341004341021341022341023341024341102341103341122341124341125341126341181341182341202341203341204341221341222341225341226341282341302341321341322341323341324341502341503341504341522341523341524341525341602341621341622341623341702341721341722341723341802341821341823341824341825341881341882350102350103350104350105350111350112350121350122350123350124350125350128350181350203350205350206350211350212350213350302350303350304350305350322350404350405350421350423350424350425350426350428350429350430350481350502350503350504350505350521350524350525350526350527350581350582350583350602350603350604350605350622350623350624350626350627350628350629350702350703350721350722350723350724350725350781350782350783350802350803350821350823350824350825350881350902350921350922350923350924350925350926350981350982360102360103360104360111360112360113360121360123360124360202360203360222360281360302360313360321360322360323360402360403360404360423360424360425360426360428360429360430360481360482360483360502360521360602360603360681360702360703360704360722360723360724360725360726360728360729360730360731360732360733360734360735360781360783360802360803360821360822360823360824360825360826360827360828360829360830360881360902360921360922360923360924360925360926360981360982360983361002361003361021361022361023361024361025361026361027361028361030361102361103361104361123361124361125361126361127361128361129361130361181370102370103370104370105370112370113370114370115370116370117370124370126370202370203370211370212370213370214370215370281370283370285370302370303370304370305370306370321370322370323370402370403370404370405370406370481370502370503370505370522370523370602370611370612370613370614370681370682370683370685370686370687370702370703370704370705370724370725370781370782370783370784370785370786370811370812370826370827370828370829370830370831370832370881370883370902370911370921370923370982370983371002371003371082371083371102371103371121371122371302371311371312371321371322371323371324371325371326371327371328371329371402371403371422371423371424371425371426371427371428371481371482371502371503371521371522371524371525371526371581371602371603371621371622371623371625371681371702371703371721371722371723371724371725371726371728410102410103410104410105410106410108410122410181410182410183410184410185410202410203410204410205410212410221410222410223410225410302410303410304410305410307410308410311410323410324410325410326410327410328410329410402410403410404410411410421410422410423410425410481410482410502410503410505410506410522410523410526410527410581410602410603410611410621410622410702410703410704410711410721410724410725410726410727410781410782410783410802410803410804410811410821410822410823410825410882410883410902410922410923410926410927410928411002411003411024411025411081411082411102411103411104411121411122411202411203411221411224411281411282411302411303411321411322411323411324411325411326411327411328411329411330411381411402411403411421411422411423411424411425411426411481411502411503411521411522411523411524411525411526411527411528411602411603411621411622411623411624411625411627411628411681411702411721411722411723411724411725411726411727411728411729419001420102420103420104420105420106420107420111420112420113420114420115420116420117420202420203420204420205420222420281420302420303420304420322420323420324420325420381420502420503420504420505420506420525420526420527420528420529420581420582420583420602420606420607420624420625420626420682420683420684420702420703420704420802420804420822420881420882420902420921420922420923420981420982420984421002421003421022421024421081421083421087421088421102421121421122421123421124421125421126421127421181421182421202421221421222421223421224421281421303421321421381422801422802422822422823422825422826422827422828429004429005429006429021430102430103430104430105430111430112430121430181430182430202430203430204430211430212430223430224430225430281430302430304430321430381430382430405430406430407430408430412430421430422430423430424430426430481430482430502430503430511430522430523430524430525430527430528430529430581430582430602430603430611430621430623430624430626430681430682430702430703430721430722430723430724430725430726430781430802430811430821430822430902430903430921430922430923430981431002431003431021431022431023431024431025431026431027431028431081431102431103431122431123431124431125431126431127431128431129431181431202431221431222431223431224431225431226431227431228431229431230431281431302431321431322431381431382433101433122433123433124433125433126433127433130440103440104440105440106440111440112440113440114440115440117440118440203440204440205440222440224440229440232440233440281440282440303440304440305440306440307440308440309440310440311440402440403440404440507440511440512440513440514440515440523440604440605440606440607440608440703440704440705440781440783440784440785440802440803440804440811440823440825440881440882440883440902440904440981440982440983441202441203441204441223441224441225441226441284441302441303441322441323441324441402441403441422441423441424441426441427441481441502441521441523441581441602441621441622441623441624441625441702441704441721441781441802441803441821441823441825441826441881441882441900442000445102445103445122445202445203445222445224445281445302445303445321445322445381450102450103450105450107450108450109450110450123450124450125450126450181450202450203450204450205450206450222450223450224450225450226450302450303450304450305450311450312450321450323450324450325450326450327450328450329450330450332450381450403450405450406450421450422450423450481450502450503450512450521450602450603450621450681450702450703450721450722450802450803450804450821450881450902450903450921450922450923450924450981451002451003451022451024451026451027451028451029451030451031451081451082451102451103451121451122451123451202451203451221451222451223451224451225451226451227451228451229451302451321451322451323451324451381451402451421451422451423451424451425451481460105460106460107460108460202460203460204460205460300460400469001469002469005469006469007469021469022469023469024469025469026469027469028469029469030500101500102500103500104500105500106500107500108500109500110500111500112500113500114500115500116500117500118500119500120500151500152500153500154500155500156500229500230500231500233500235500236500237500238500240500241500242500243510104510105510106510107510108510112510113510114510115510116510117510118510121510129510131510181510182510183510184510185510302510303510304510311510321510322510402510403510411510421510422510502510503510504510521510522510524510525510603510604510623510681510682510683510703510704510705510722510723510725510726510727510781510802510811510812510821510822510823510824510903510904510921510923510981511002511011511024511025511083511102511111511112511113511123511124511126511129511132511133511181511302511303511304511321511322511323511324511325511381511402511403511421511423511424511425511502511503511504511523511524511525511526511527511528511529511602511603511621511622511623511681511702511703511722511723511724511725511781511802511803511822511823511824511825511826511827511902511903511921511922511923512002512021512022513201513221513222513223513224513225513226513227513228513230513231513232513233513301513322513323513324513325513326513327513328513329513330513331513332513333513334513335513336513337513338513401513402513422513423513424513426513427513428513429513430513431513432513433513434513435513436513437520102520103520111520112520113520115520121520122520123520181520201520203520204520281520302520303520304520322520323520324520325520326520327520328520329520330520381520382520402520403520422520423520424520425520502520521520523520524520525520526520527520581520602520603520621520622520623520624520625520626520627520628522301522302522323522324522325522326522327522328522601522622522623522624522625522626522627522628522629522630522631522632522633522634522635522636522701522702522722522723522725522726522727522728522729522730522731522732530102530103530111530112530113530114530115530124530125530126530127530128530129530181530302530303530304530322530323530324530325530326530381530402530403530423530424530425530426530427530428530481530502530521530523530524530581530602530621530622530623530624530625530626530627530628530629530681530702530721530722530723530724530802530821530822530823530824530825530826530827530828530829530902530921530922530923530924530925530926530927532301532302532322532323532324532325532326532327532328532329532501532502532503532504532523532524532525532527532528532529532530532531532532532601532622532623532624532625532626532627532628532801532822532823532901532922532923532924532925532926532927532928532929532930532931532932533102533103533122533123533124533301533323533324533325533401533422533423540102540103540104540121540122540123540124540127540202540221540222540223540224540225540226540227540228540229540230540231540232540233540234540235540236540237540302540321540322540323540324540325540326540327540328540329540330540402540421540422540423540424540425540426540502540521540522540523540524540525540526540527540528540529540530540531540602540621540622540623540624540625540626540627540628540629540630542521542522542523542524542525542526542527610102610103610104610111610112610113610114610115610116610117610118610122610124610202610203610204610222610302610303610304610305610323610324610326610327610328610329610330610331610402610403610404610422610423610424610425610426610428610429610430610431610481610482610502610503610522610523610524610525610526610527610528610581610582610602610603610621610622610625610626610627610628610629610630610631610632610681610702610703610722610723610724610725610726610727610728610729610730610802610803610822610824610825610826610827610828610829610830610831610881610902610921610922610923610924610925610926610927610929610981611002611021611022611023611024611025611026620102620103620104620105620111620121620122620123620200620302620321620402620403620421620422620423620502620503620521620522620523620524620525620602620621620622620623620702620721620722620723620724620725620802620821620822620823620825620826620881620902620921620922620923620924620981620982621002621021621022621023621024621025621026621027621102621121621122621123621124621125621126621202621221621222621223621224621225621226621227621228622901622921622922622923622924622925622926622927623001623021623022623023623024623025623026623027630102630103630104630105630106630121630123630202630203630222630223630224630225632221632222632223632224632301632322632323632324632521632522632523632524632525632621632622632623632624632625632626632701632722632723632724632725632726632801632802632803632821632822632823640104640105640106640121640122640181640202640205640221640302640303640323640324640381640402640422640423640424640425640502640521640522650102650103650104650105650106650107650109650121650202650203650204650205650402650421650422650502650521650522652301652302652323652324652325652327652328652701652702652722652723652801652822652823652824652825652826652827652828652829652901652902652922652924652925652926652927652928652929653001653022653023653024653101653121653122653123653124653125653126653127653128653129653130653131653201653221653222653223653224653225653226653227654002654003654004654021654022654023654024654025654026654027654028654201654202654203654221654224654225654226654301654321654322654323654324654325654326659001659002659003659004659005659006659007659008659009659010659011710000810000820000');
BEGIN
  --获取行政区划代码
  v_area:=utl_raw.cast_to_varchar2( utl_raw.substr(v_city,trunc(dbms_random.value(1,2846))*6+1,6));
  --年份
  v_year:=trunc(dbms_random.value(1890,2008));
  --月份
  v_month:=lpad(to_char(trunc(dbms_random.value(1,12))),2,'0');
  
  IF v_month='02' THEN
     IF MOD(v_year,4)=0 THEN 
       v_day:=lpad(to_char(trunc(dbms_random.value(1,29))),2,'0');--闰年月
     ELSE 
       v_day:=lpad(to_char(trunc(dbms_random.value(1,28))),2,'0');--平年月
     END IF;
  ELSIF v_month IN('01','03','05','07','08','10','12') THEN  --大月
    v_day:=lpad(to_char(trunc(dbms_random.value(1,31))),2,'0');
  ELSE 
    v_day:=lpad(to_char(trunc(dbms_random.value(1,30))),2,'0'); --小月
  END IF;
  v_sex:=rpad(to_char(trunc(dbms_random.value(1,999))),3,'0'); --顺序号和性别
  v_personid:=v_area||to_char(v_year)||v_month||v_day||v_sex;  --身份证号【未包括校验位】
  SELECT v_personid||DECODE(12 - DECODE(wi,0,11,1,12,wi),10,'x',to_char(12 - DECODE(wi,0,11,1,12,wi))) wo
    INTO v_personid--身份证号【包括校验位】
    FROM (SELECT MOD(SUM(substr(v_personid,LEVEL,1) * MOD(power(2,18-rownum),11)),11) wi FROM dual
          CONNECT BY LEVEL <= length(v_personid));

  RETURN v_personid;
END;

调用函数获取结果

SELECT func_get_p_id() FROM dual;

你可能感兴趣的:(oracle,数据库,数据仿真脱敏)