Jedním z nejběžnějších nečistých dat, se kterými se můžete setkat, je to, kdy data obsahují úvodní nuly v číselných nebo řetězcových datech. K tomu může dojít při importu dat z externích zdrojů nebo při použití technik automatizovaného sběru dat.
Úvodní nuly v datech mohou být problematické zejména při práci s číselnými hodnotami, které jsou uloženy jako řetězce.
V této příručce probereme všechny metody a techniky, které můžeme použít k odstranění jakýchkoli úvodních nul v datové sadě SQL.
Ukázkové nastavení dat
Než se ponoříme do aplikací a příkladů, začněme nastavením základní datové sady, která pomůže demonstrovat výskyt úvodních nul.
Zvažte tabulku zaměstnance s daty, jak je uvedeno níže:
VYTVOŘIT TABULKU Zaměstnanec (
ID zaměstnance VARCHAR(10)
);
VLOŽTE DO HODNOT zaměstnance (ID zaměstnance).
('00123'),
('00456'),
('00789'),
('01012'),
('01567');
V tomto případě je ID zaměstnance typu „varchar“. Hodnoty však obsahují úvodní nuly.
Pojďme prozkoumat metody, které můžeme použít k odstranění těchto úvodních nul.
Použití funkce CAST
Jednou z metod odstranění úvodních nul je převedení řetězce na číselný typ. Můžeme použít funkci, jako je CAST nebo CONVERT(), jak je ukázáno v následujícím příkladu:
SELECT CAST(EmployeeID AS INT) AS EmployeeIDWithout ZerosOD zaměstnance;
To by mělo fungovat automaticky v databázích, které podporují funkci cast().
V databázích, jako je MySQL, však možná budete muset přenést funkci do funkce trim, abyste skutečně odstranili úvodní nuly. Hodnoty pak můžete převést na číselný typ, jak ukazuje následující příklad:
VYBERTE OBSAZENO (TRIM (VEDOUCÍ '0' Z ID Zaměstnance) JAKO PODPIS) JAKO ID zaměstnanceBez nulOD zaměstnance;
Výsledný výstup je následující:
Použití funkce LTRIM
Nejběžnější a nejvýkonnější metodou, kterou můžete použít k odstranění jakýchkoli úvodních nul, je použití funkce LTRIM(). Tato funkce nám umožňuje odstranit jakékoli úvodní mezery v daném řetězci.
Neumožňuje nám však specifikovat konkrétní znak, který chceme odstranit. V našem případě jej můžeme použít odstraněním úvodních nul z řetězce.
Příklad je následující:
SELECT LTRIM(EmployeeID, '0') AS EmployeeIDWithout NulaOD zaměstnance;
To by mělo z řetězce odstranit úvodní nulové znaky.
Závěr
V tomto tutoriálu jsme prozkoumali dvě hlavní metody, které můžeme použít k odstranění jakýchkoli počátečních nulových znaků z daného řetězce/sloupce.