it-swarm-id.com

Menghapus nol terkemuka dari bidang dalam pernyataan SQL

Saya sedang mengerjakan query SQL yang membaca dari database SQLServer untuk menghasilkan file ekstrak. Salah satu persyaratan untuk menghapus nol terkemuka dari bidang tertentu, yang merupakan bidang VARCHAR(10) sederhana. Jadi, misalnya, jika bidang berisi '00001A', pernyataan SELECT perlu mengembalikan data sebagai '1A'.

Apakah ada cara dalam SQL untuk dengan mudah menghapus nol terkemuka dengan cara ini? Saya tahu ada fungsi RTRIM, tetapi ini sepertinya hanya untuk menghapus spasi. 

87
Tim C
select substring(ColumnName, patindex('%[^0]%',ColumnName), 10)
135
Ian Horwill
select replace(ltrim(replace(ColumnName,'0',' ')),' ','0')
21
MTZ
select substring(substring('B10000N0Z', patindex('%[0]%','B10000N0Z'), 20), 
    patindex('%[^0]%',substring('B10000N0Z', patindex('%[0]%','B10000N0Z'), 
    20)), 20)

mengembalikan N0Z, yaitu, akan menghilangkan nol terkemuka dan apa pun yang datang sebelum mereka.

4
Nat

Saya memiliki kebutuhan yang sama dan menggunakan ini: 

select 
    case 
        when left(column,1) = '0' 
        then right(column, (len(column)-1)) 
        else column 
      end
3
ekc

Jika Anda ingin kueri mengembalikan 0 bukannya string nol atau nilai lainnya, Anda dapat mengubahnya menjadi pernyataan kasus seperti ini:

select CASE
      WHEN ColumnName = substring(ColumnName, patindex('%[^0]%',ColumnName), 10) 
       THEN '0'
      ELSE substring(ColumnName, patindex('%[^0]%',ColumnName), 10) 
      END
2
Kathryn Wilson

Untuk menghapus memimpin 0, Anda dapat mengalikan kolom angka dengan 1Eg: Pilih (Nama Kolom * 1)

0
Krin

Anda bisa menggunakan ini:

SELECT REPLACE(LTRIM(REPLACE('000010A', '0', ' ')),' ', '0')
0
Stelian

Berikut adalah fungsi nilai skalar SQL yang menghapus nol di depan dari string:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      Vikas Patel
-- Create date: 01/31/2019
-- Description: Remove leading zeros from string
-- =============================================
CREATE FUNCTION dbo.funRemoveLeadingZeros 
(
    -- Add the parameters for the function here
    @Input varchar(max)
)
RETURNS varchar(max)
AS
BEGIN
    -- Declare the return variable here
    DECLARE @Result varchar(max)

    -- Add the T-SQL statements to compute the return value here
    SET @Result = @Input

    WHILE LEFT(@Result, 1) = '0'
    BEGIN
        SET @Result = SUBSTRING(@Result, 2, LEN(@Result) - 1)
    END

    -- Return the result of the function
    RETURN @Result

END
GO
0
Vikas