En av de vanligaste orena data som du kan stöta på är den där data innehåller inledande nollor i numerisk eller strängdata. Detta kan inträffa när du importerar data från externa källor eller använder de automatiska datainsamlingsteknikerna.
Inledande nollor i data kan vara problematiskt, särskilt när man hanterar numeriska värden som lagras som strängar.
I den här guiden kommer vi att diskutera alla metoder och tekniker som vi kan använda för att ta bort eventuella inledande nollor i en SQL-datauppsättning.
Exempel på datainställning
Innan vi dyker in i applikationerna och exemplen, låt oss börja med att sätta upp en grundläggande datauppsättning som hjälper till att demonstrera förekomsten av inledande nollor.
Betrakta en anställds tabell med uppgifterna som visas i följande:
SKAPA BORD Anställd (
Anställd-ID VARCHAR(10)
);
INSERT I Employee (EmployeeID) VÄRDEN
('00123'),
('00456'),
('00789'),
('01012'),
('01567');
I det här fallet är anställd-ID av typen 'varchar'. Värdena innehåller dock inledande nollor.
Låt oss utforska metoderna som vi kan använda för att ta bort dessa inledande nollor.
Använda CAST-funktionen
En av metoderna för att ta bort eventuella inledande nollor är att konvertera strängen till en numerisk typ. Vi kan använda en funktion som CAST eller CONVERT() som visas i följande exempel:
VÄLJ CAST(Anställd-ID SOM INT) SOM Anställd-IDUtanNollorFRÅN Anställd;
Detta bör fungera automatiskt i databaser som stöder cast()-funktionen.
Men i databaser som MySQL kan du behöva porta funktionen till trimfunktionen för att faktiskt ta bort de inledande nollorna. Du kan sedan konvertera värdena till numerisk typ som visas i följande exempel:
SELECT CAST(TRIM(LEADING '0' FROM EmployeeID) AS SIGNED) AS EmployeeIDUtanNollorFRÅN Anställd;
Resultatet är som följer:
Använda LTRIM-funktionen
Den vanligaste och mest kraftfulla metoden som du kan använda för att ta bort inledande nollor är att använda LTRIM()-funktionen. Den här funktionen låter oss ta bort alla ledande blanktecken i en given sträng.
Det tillåter oss dock inte att specificera den specifika karaktären som vi vill ta bort. I vårt fall kan vi använda det genom att ta bort de inledande nollorna från en sträng.
Ett exempel är följande:
VÄLJ LTRIM(Anställd-ID, '0') SOM Anställd-IDUtanNollorFRÅN Anställd;
Detta bör ta bort de inledande nolltecken från strängen.
Slutsats
I den här handledningen utforskade vi två huvudmetoder som vi kan använda för att ta bort alla inledande nolltecken från en given sträng/kolumn.