for removing (trim) leading zeros.
-- SQL Server leading zero - T-SQL padding numbers - lpad tsql - sql pad zero SELECT ListPrice, Padded=RIGHT('0000000000' + CONVERT(VARCHAR,ListPrice), 10) FROM AdventureWorks2008.Production.Product WHERE ListPrice > 0.0 ------------ -- T SQL pad leading zeros - transact sql leading zeros SELECT ProductID, ReorderPoint = REPLACE(STR(ReorderPoint, 6), SPACE(1), '0') FROM AdventureWorks2008.Production.Product /* ProductID ReorderPoint 1 000750 2 000750 3 000600 */ ------------ -- SQL Server leading zero - SQL leading zeros - sql server pad leading zero USE AdventureWorks2008; DECLARE @Number int = 789 SELECT RIGHT ('000000'+ CAST (@Number AS varchar), 6) -- 000789 ------------ USE AdventureWorks; -- SQL padding salary pay rate money data type with leading zeroes -- SQL left pad number - prefix number with zeros - sql server leading zero -- SQL convert number to text - cast number to varchar string SELECT EmployeeID, Rate, PaddedRate = RIGHT(REPLICATE('0',8) + CAST(Rate AS VARCHAR(8)),8) FROM HumanResources.EmployeePayHistory /* Partial results EmployeeID Rate PaddedRate 1 12.45 00012.45 2 13.4615 00013.46 3 43.2692 00043.27 */ -- SQL zero padding ListPrice money data type - t sql leading zero -- SQL left pad - T-SQL string concatenation - sql concat -- SQL convert number to string - pad numeric with zeros SELECT ProductID, ListPrice, PaddedListPrice = RIGHT(REPLICATE('0', 8) + CAST(ListPrice AS VARCHAR(8)),8) FROM Production.Product /* Results sample ProductID ListPrice PaddedListPrice 965 742.35 00742.35 */ -- SQL month leading zero - sql pad month number with zero SELECT RIGHT('0' + convert(varchar(2), month(GetDate())), 2) -- 06 ---------- -- trim leading zeros - sql trim leading zeros - remove leading zeros sql USE AdventureWorks2008; DECLARE @num varchar(32)= '00091234560' SELECT right(@num, len(@num)+1 - patindex('%[^0]%', @num)) -- 91234560 ------------ -- SQL pad numeric data type - SQL pad digits - transact sql leading zeros -- SQL pad with leading zeroes - append leading zeros - T-SQL top function -- SQL pad with trailing zeroes - MSSQL append trailing zeros -- SQL cast money to numeric - cast numeric to string - mssql newid function SELECT TOP (5) ProductName = Name, ListPrice = RIGHT(REPLICATE('0', 10) + CAST(CAST(ListPrice AS NUMERIC(9,3)) AS VARCHAR) ,10) FROM AdventureWorks.Production.Product ORDER BY NEWID() /* ProductName ListPrice LL Mountain Frame - Black, 40 000249.790 HL Touring Frame - Yellow, 46 001003.910 Bike Wash - Dissolver 000007.950 Metal Sheet 7 000000.000 HL Road Frame - Red, 56 001431.500 */ ---------- -- PAD leading zeros function - sql server leading zeros - UDF USE AdventureWorks2008; GO CREATE FUNCTION fnPadNumber (@n DECIMAL(26,2), @length TINYINT) RETURNS VARCHAR(32) AS BEGIN RETURN ( replicate('0',@length - len(convert(VARCHAR(32),@n))) + convert(VARCHAR(32),@n)) END GO SELECT dbo.fnPadNumber(1234567890.12,16) -- 0001234567890.12 ------------ -- T SQL computed column zero padding - sql generate alphanumeric sequence USE tempdb; -- SQL Server 2008 T-SQL CREATE TABLE Celebrity ( ID INT IDENTITY ( 1 , 1 ) PRIMARY KEY, CelebrityID AS 'CEL' + RIGHT('0000' + CAST( ID as varchar),5), -- computed column FirstName VARCHAR(32), LastName VARCHAR(32), ModifiedDate DATE DEFAULT getdate()) GO INSERT Celebrity (FirstName, LastName) VALUES('Jennifer','Aniston'), ('Drew','Barrymore'), ('Diana','Princess of Wales'), ('Tom','Jones'), ('Lucille','Ball'), ('Frank','Sinatra'), ('Elvis','Presley') SELECT * FROM Celebrity GO -- CelebrityID is zero padded alphanumeric sequence /* ID CelebrityID FirstName LastName ModifiedDate 1 CEL00001 Jennifer Aniston 2012-07-04 2 CEL00002 Drew Barrymore 2012-07-04 3 CEL00003 Diana Princess of Wales 2012-07-04 4 CEL00004 Tom Jones 2012-07-04 5 CEL00005 Lucille Ball 2012-07-04 6 CEL00006 Frank Sinatra 2012-07-04 7 CEL00007 Elvis Presley 2012-07-04 */ -- Cleanup demo DROP TABLE Celebrity GO ------------ -- SQL removing leading zeros when no spaces in string - trimming Leading Zeros USE AdventureWorks2008; DECLARE @NumberString varchar(16)='000000246' SELECT REPLACE(LTRIM(REPLACE(@NumberString, '0', ' ')), ' ', '0') -- 246 ------------ -- SQL remove leading zeros - sql trim leading zeros - numeric test DECLARE @StringWithLeadingZeros VARCHAR(12) = '000000654321' SELECT CAST(CAST(@StringWithLeadingZeros AS INT) AS VARCHAR(10)) WHERE ISNUMERIC (@StringWithLeadingZeros)=1 -- 654321 ------------ -- LPAD & RPAD string scalar-valued user-defined functions (UDF) USE AdventureWorks; GO -- Left pad string function CREATE FUNCTION LPAD (@SourceString VARCHAR(MAX), @FinalLength INT, @PadChar CHAR(1)) RETURNS VARCHAR(MAX) AS BEGIN RETURN (SELECT Replicate(@PadChar,@FinalLength - Len(@SourceString)) + @SourceString) END GO -- T-SQL Test left padding SELECT LeftPaddedString = dbo.LPAD(Cast(84856 AS VARCHAR),12,'0') GO -- 000000084856 -- MSSQL right pad string function CREATE FUNCTION RPAD (@SourceString VARCHAR(MAX), @FinalLength INT, @PadChar CHAR(1)) RETURNS VARCHAR(MAX) AS BEGIN RETURN (SELECT @SourceString + Replicate(@PadChar,@FinalLength - Len(@SourceString))) END GO -- Test right padding SELECT RightPaddedString = dbo.RPAD(Cast(84856 AS VARCHAR),12,'*') GO -- 84856******* ---------- -- Padding a money column with leading zeroes - sql convert leading zero -- SQL convert money data type to string SELECT PaddedUnitPrice = RIGHT(replicate('0',20) + convert(varchar,UnitPrice,1), 20) FROM Northwind.dbo.Products /* Partial results PaddedUnitPrice 00000000000000018.00 00000000000000019.00 00000000000000010.00 00000000000000022.00 */ /**************** Zero padding other numeric data ****************/ -- SQL Server 2008 version featuring the LEFT function -- SQL convert integer to text - convert integer to varchar USE AdventureWorks2008; DECLARE @InputNumber int = 522, @OutputLength tinyint = 12 DECLARE @PaddedString char(12) SET @PaddedString = LEFT( replicate( '0', @OutputLength ), @OutputLength - len( @InputNumber ) ) + convert( varchar(12), @InputNumber) SELECT PaddedNumber=@PaddedString /* Result PaddedNumber 000000000522 */ -- SQL format currency and pad with leading spaces -- SQL Server lpad to 9 characters SELECT TOP (3) ProductName=Name, Price= CONVERT(char(9), ListPrice, 1) FROM Production.Product WHERE ListPrice > 0.0 ORDER BY Newid() /* ProductName Price LL Touring Frame - Blue, 62 333.42 LL Road Seat Assembly 133.34 Road-250 Red, 58 2,443.35 */ ------------ -- Padding with zeroes in the middle of string DECLARE @Number varchar(10) SET @Number = '99999' PRINT 'TRK' + REPLICATE('0', 12 - LEN(@Number)) + @Number SELECT [Zero Padding]='TRK' + REPLICATE('0', 12 - LEN(@Number)) + @Number -- Result: TRK000000099999 -- Applying the STUFF string function for zero padding -- SQL convert integer data type to string DECLARE @SerialNo int, @OutputSize tinyint SET @OutputSize = 10 SET @SerialNo = 6543 SELECT PaddedSerialNo = STUFF(replicate('0', @OutputSize), @OutputSize - len(@SerialNo)+1, len(@SerialNo), convert(varchar(9),@SerialNo)) -- Result: 0000006543 -- SQL pad integer with 0-s -- SQL str function - numeric to character conversion SELECT TOP 5 CAST(replace(str(ProductID,6),' ','0') AS char(6)) AS ProdID FROM AdventureWorks.Production.Product ORDER BY Name /* Results ProdID 000001 000879 000712 000003 000002 */ -- SQL pad string with character -- SQL create function -- SQL user-defined function CREATE FUNCTION dbo.fnLeftPadString ( @Input VARCHAR(255), @PadChar CHAR(1), @LengthToPad TINYINT ) RETURNS VARCHAR(255) AS BEGIN DECLARE @InputLen TINYINT SET @InputLen = LEN(@Input) RETURN CASE WHEN @InputLen < @LengthToPad THEN REPLICATE(@PadChar, @LengthToPad - @InputLen) + @Input ELSE @Input END -- CASE END -- UDF GO -- SQL pad string – left padding - SQL left pad with asterisk -- SQL check printing - SQL currency formatting DECLARE @DollarAmount varchar(20) SET @DollarAmount = '234.40' SELECT PaddedString='$'+dbo.fnLeftPadString(@DollarAmount, '*', 10) GO -- Result: $****234.40 -- SQL currency formatting with asterisk-fill DECLARE @Amount MONEY SET @Amount = '3534.40' SELECT CurrencyFormat = '$' + REPLACE(Convert(char(12),@Amount,1),' ','*') -- $****3,534.40 SELECT PaddedProductID = dbo.fnLeftPadString (CONVERT(varchar, ProductID), '0', 6), ProductName=Name, ListPrice FROM Production.Product ORDER BY PaddedProductID GO /* Partial results PaddedProductID ProductName ListPrice 000757 Road-450 Red, 48 1457.99 000758 Road-450 Red, 52 1457.99 000759 Road-650 Red, 58 782.99 000760 Road-650 Red, 60 782.99 000761 Road-650 Red, 62 782.99 */ ---------- -- Generating tracking numbers -- SQL pad zeroes WITH cteSequence(SeqNo) AS (SELECT 1 UNION ALL SELECT SeqNo + 1 FROM cteSequence WHERE SeqNo < 1000000) SELECT TOP 100 CAST(('TRK' + REPLICATE('0', 7 - LEN(CAST(SeqNo AS VARCHAR(6)))) + CAST(SeqNo AS VARCHAR(6))) AS VARCHAR(10)) AS TrackingNo FROM cteSequence OPTION (MAXRECURSION 0) GO /* Partial results TrackingNo TRK0000001 TRK0000002 TRK0000003 TRK0000004 TRK0000005 TRK0000006 TRK0000007 */ ---------- -- SQL server pad -- SQL str function -- SQL pad integer -- SQL left pad SELECT TOP (4) StaffName=LastName+', '+FirstName, PaddedEmployeeID = REPLACE(STR(EmployeeID, 6, 0), ' ', '0') FROM HumanResources.Employee e INNER JOIN Person.Contact c ON e.ContactID = c.ContactID ORDER BY NEWID() /* Results StaffName PaddedEmployeeID Dyck, Shelley 000214 Hines, Michael 000039 Ford, Jeffrey 000015 Caron, Rob 000168 */ -- SQL asterisk padding -- SQL pad with asterisk -- SQL right pad SELECT TOP ( 2 * 2 ) AddressID , City+REPLICATE('*', 20-len(City)) AS City , PostalCode FROM AdventureWorks.Person.[Address] WHERE LEN(City) <= 20 ORDER by NEWID() GO /* AddressID City PostalCode 13465 Imperial Beach****** 91932 23217 Corvallis*********** 97330 18548 Milwaukie*********** 97222 24893 Goulburn************ 2580 */ ------------ ------------ -- SQL left pad any size string Alpha with any length string Beta ------------ -- SQL user-defined function - UDF - scalar-valued string function -- T-SQL varchar(max) USE AdventureWorks2008; GO CREATE FUNCTION fnMaxPad (@SourceString VARCHAR(MAX), @PaddingString VARCHAR(MAX), @OutputLength INT) RETURNS VARCHAR(MAX) AS BEGIN DECLARE @WorkString VARCHAR(MAX) = ISNULL(REPLICATE(@PaddingString,@OutputLength - len(ISNULL(@SourceString,0))), '') + @SourceString RETURN RIGHT(@WorkString, @OutputLength) END GO -- Execute UDF SELECT TOP ( 5 ) [SQL Padding Demo] = dbo.fnMaxPad(CONVERT(VARCHAR,FLOOR(ListPrice)),'_/',21) FROM Production.Product ORDER BY NEWID() GO /* Results SQL Padding Demo _/_/_/_/_/_/_/2443.00 /_/_/_/_/_/_/_/_/0.00 /_/_/_/_/_/_/_/147.00 /_/_/_/_/_/_/_/_/0.00 _/_/_/_/_/_/_/1003.00 */ ------------ -- SQL left pad unicode string Alpha with any length unicode string Beta -- MSSQL pad international -- SQL user-defined function - UDF - scalar-value function -- T-SQL nvarchar(max) USE AdventureWorks2008; GO CREATE FUNCTION fnMaxPadInternational (@SourceString NVARCHAR(MAX), @PaddingString NVARCHAR(MAX), @OutputLength INT) RETURNS NVARCHAR(MAX) AS BEGIN DECLARE @WorkString NVARCHAR(MAX) = ISNULL(REPLICATE(@PaddingString,@OutputLength - len(ISNULL(@SourceString,0))), '') + @SourceString RETURN RIGHT(@WorkString, @OutputLength) END GO -- Execute UDF SELECT TOP ( 5 ) [SQL Padding Demo] = dbo.fnMaxPadInternational(LEFT(Description,6),'_/',21) FROM Production.ProductDescription ORDER BY NEWID() GO /* Results SQL Padding Demo /_/_/_/_/_/_/_/ล้อ ที่ /_/_/_/_/_/_/_/Roue d /_/_/_/_/_/_/_/شوكة ط /_/_/_/_/_/_/_/Each f /_/_/_/_/_/_/_/Jeu de */ ------------
Reference from sqlusa.com
No comments:
Post a Comment