Programmēšana

Oracle CHR funkcija

Viena no prezentācijām, kas man patika Rocky Mountain Oracle lietotāju grupas (RMOUG) mācību dienās 2010, bija Stīvena Džeksona prezentācija "SQL izmantošana SQL ģenerēšanai". Esmu izmantojis dažas no metodēm, kuras viņš apsprieda savā prezentācijā, lai SQL ģenerētu SQL, bet viena lieta, par kuru es nebiju domājusi, bija CHR funkcijas izmantošana, lai skripti būtu vieglāk lasāmi. Lai gan šis ziņojums koncentrējas uz Oracle CHR virknes funkciju ieviešanas izmantošanu, citas datu bāzes atbalsta arī CHR (vai CHAR) funkciju.

Viens no CHR lietderības piemēriem ir tādu rezultātu izveidošana, kuros ir rakstzīmes, kas ir nozīmīgas pašā vaicājumā. Pareiza CHR izmantošana ļauj SQL izstrādātājam izvairīties no nepieciešamības izvairīties no šīm rakstzīmēm ar vaicājuma sintakses nozīmi. Piemēram, lai drukātu Oracle personāla shēmas darbinieku uzvārdus ar atsevišķām pēdiņām ap uzvārdiem, varētu uzrakstīt šādu vaicājumu:

atlasīt '' '' || uzvārds || no darbiniekiem; 

Četri pēdiņi veiksmīgi izvairās no pēdiņas gan pirms, gan pēc uzvārda. Diemžēl var viegli pazust pēdiņās, īpaši sarežģītāku vaicājumu gadījumā. Tā kā ASCII decimālais kods 39 rada vienu pēdiņu, kad tas tiek nodots CHR, izteiksme CHR (39) var izmantot tā vietā, kā parādīts tālāk:

atlasīt CHR (39) || uzvārds || CHR (39) no darbiniekiem; 

Man tas ir vairāk lasāms. Līdzīgi ar CHR funkciju var attēlot vēl sarežģītākas rakstzīmes. Piemēram, Stefans savā prezentācijā norādīja, ka CHR (10) var izmantot, lai izvadā tiktu iespiesta jauna rinda.

Viena no interesantajām idejām, kuru Stīvens apsprieda, bija vienkārša skripta izmantošana, lai parādītu dažādos rakstzīmju attēlojumus, kas pieejami, izmantojot funkciju CHR. Tīkla ASCII diagrammā vai asciitable.com vienmēr var atsaukties uz tādu resursu kā Tech, taču ir interesanti vienkārši attēlot attēlojumus, izmantojot kodu:

- displayCHR.sql - - Parāda rakstzīmes, kas saistītas ar pamata un paplašinātiem ASCII kodiem. - SET galva izslēgta SET lappuses izmērs 0 SET līnijas 120 SET trim spole ieslēgta SET atgriezeniskā saite izslēgta SET pārbaude izslēgta SET servera izeja uz 5000 izmēru BEGIN FOR i IN 32..255 cilpa Dbms_output.put_line (i || '' || chr (i)) ; END cilpa; END; / 

Iepriekš izpildītais koda fragments, izpildot SQL * Plus, parādīs lielu skaitu rakstzīmju, kas pieejamas pamata un paplašinātajā ASCII rakstzīmju kopā. Var izmantot spoles komandu, lai spolētu izvadi uz failu. Savā Windows datorā es pat varēju apskatīt šos ģenerētos simbolus spoles izvades failā, izmantojot pamata lietojumprogrammu Notepad.

Secinājums

Kā Stephen norādīja savā prezentācijā, CHR funkcija var padarīt SQL * Plus skriptus vieglāk lasāmus un uzturamus.

Šo stāstu "Oracle CHR Function" sākotnēji publicēja JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found