Se propune o metodă nouă și mai compactă pentru conversia datelor și a numerelor într-un șir într-o interogare
În limba de interogare, nu există funcții încorporate pentru conversia unui tip de date în altul, de exemplu, șiruri de caractere în numere sau date și invers. În lucrarea "Exprimați un șir ca număr și un șir ca o dată în interogare", am propus metode destul de compacte de a transforma "dintr-un șir". Acum este rândul pentru a inversa conversiile "la rând".
Principala problemă a transformării luate în considerare este alegerea fiecărui bit specific al numărului original. De exemplu, numărul 123 este format din trei cifre. Fie ca biții să fie numerotați de la dreapta la stânga începând de la zero. Evacuările diferă în funcție de greutate: cifra zero în sistemul numeric zecimal are o greutate de 1, prima - 10, a doua - 100 și așa mai departe. 123 împărțit la 10, obținem 12,3 :, obținut ca reziduu obținut prin împărțirea unui ansamblu cu 10. Primul evacuare (al doilea din stânga), în acest fel - pentru este necesară fiecare alocare de biți pentru a găsi un număr întreg de diviziune pe greutatea de descărcare și apoi. Apoi vom lua întreaga obține 12. Apoi găsiți restul după împărțirea cu 10 pentru a da 2 - cautat primul (al doilea din stânga) de descărcare. Scrierea literală a acestor expresii în interogare este foarte, foarte greoaie, dar există și altă cale.
Acest mod este folosit pentru a găsi restul divizării unei perechi de funcții: SEC și ADD CODE. Faptul este că funcția SEC este de fapt o funcție a restului divizării cu 60 de secunde de la începutul timpului. Pentru a o transforma într-o funcție de a calcula restul de la împărțirea cu 10, este suficient să numărați secundele ca șase. Aceasta înseamnă că funcția necesară va fi scrisă astfel:
Această funcție selectează cifra din dreapta (zero) a numărului X. Pentru a selecta prima cifră, trebuie să utilizați funcția
Și pentru a selecta a doua funcție
Și așa mai departe. Factorul 60 face posibilă distingerea descărcărilor de zecimi dintr-o fracțiune de 600 de sute și așa mai departe.
Limitarea abordării considerate este numărul maxim de secunde când se lucrează cu datele. Este astfel încât să putem aloca nu mai mult de 10 zecimale în număr. Dacă numărul de caractere semnificative este mai mare, numărul inițial trebuie mai întâi împărțit în două părți în mod "normal", folosind operația EXPRESS AS.
Dăm un exemplu de interogare pentru cazul NUMBER (8, 2)
Pentru a face înregistrarea puțin mai scurtă, două constante - un șir de cifre "0123456789" și începutul timpului pot fi redate într-o subcotare
În mod similar, puteți converti un număr într-un șir în notație binară. Aici este interogarea de scriere sub forma unui șir de opt biți cel mai puțin semnificativ de un număr dat:
Un efect secundar al regularităților utilizate este acela că expresia
pot fi folosite în interogare pentru a verifica paritatea numărului X.
Pentru a traduce o dată într-un șir, este suficient să traduceți numărul de zile, luni și ani de la data originală într-un șir individual. Rezultatul este următoarea interogare
După cum puteți vedea, expresiile folosite pentru a converti într-un șir sunt destul de simple și compacte, mai ales dacă le comparați cu ceea ce sa folosit până acum.