Üks levinumaid ebapuhtaid andmeid, millega võite kokku puutuda, on see, kus andmed sisaldavad numbri- või stringandmetes eesnulle. See võib juhtuda andmete importimisel välistest allikatest või automatiseeritud andmekogumistehnikate kasutamisel.
Esinullide sisestamine andmetes võib olla problemaatiline, eriti stringidena salvestatud arvväärtuste käsitlemisel.
Selles juhendis käsitleme kõiki meetodeid ja tehnikaid, mida saame kasutada SQL-i andmestiku algusnullide eemaldamiseks.
Andmete seadistuse näidis
Enne rakendustesse ja näidetesse sukeldumist alustame põhiandmestiku seadistamisega, mis aitab näidata esinullide esinemist.
Mõelge töötajate tabelile andmetega, nagu on näidatud järgmiselt:
LOO TABEL Töötaja (
Töötaja ID VARCHAR(10)
);
INSERT INTO Töötaja (EmployeeID) VÄÄRTUSED
('00123'),
('00456'),
('00789'),
('01012'),
('01567');
Sel juhul on töötaja ID 'varchar' tüüpi. Väärtused sisaldavad aga eesnulle.
Uurime meetodeid, mida saame nende esinullide eemaldamiseks kasutada.
Funktsiooni CAST kasutamine
Üks eesolevate nullide eemaldamise viise on stringi teisendamine numbritüübiks. Saame kasutada sellist funktsiooni nagu CAST või CONVERT(), nagu on näidatud järgmises näites:
SELECT CAST(EmployeeID AS INT) AS TöötajaIDWithoutZerosFROM Töötaja;
See peaks toimima automaatselt andmebaasides, mis toetavad funktsiooni cast().
Kuid sellistes andmebaasides nagu MySQL peate võib-olla juhtnullide eemaldamiseks funktsiooni kärpimisfunktsioonile portima. Seejärel saate teisendada väärtused numbritüüpideks, nagu on näidatud järgmises näites:
SELECT CAST(TRIM(LEADING '0' FROM EmployeeID) AS ALLKIRJATUD) AS Töötaja ID Ilma nullitaFROM Töötaja;
Saadud väljund on järgmine:
Funktsiooni LTRIM kasutamine
Kõige tavalisem ja võimsam meetod, mida saate kasutada eesolevate nullide eemaldamiseks, on funktsiooni LTRIM() kasutamine. See funktsioon võimaldab meil eemaldada antud stringist kõik eesmised tühimärgid.
Kuid see ei võimalda meil määrata konkreetset märki, mida soovime eemaldada. Meie puhul saame seda kasutada, eemaldades stringist eesmised nullid.
Näide on järgmine:
SELECT LTRIM(TöötajaID, '0') AS TöötajaIDWithoutZerosFROM Töötaja;
See peaks eemaldama stringist algavad nullmärgid.
Järeldus
Selles õpetuses uurisime kahte peamist meetodit, mille abil saame eemaldada kõik etteantud stringist/veerust algavad nullmärgid.