Estou trabalhando em uma consulta SQL que lê de um banco de dados SQLServer para produzir um arquivo de extração. Um dos requisitos para remover os zeros à esquerda de um campo específico, que é um VARCHAR(10)
campo simples . Portanto, por exemplo, se o campo contém '00001A', a instrução SELECT precisa retornar os dados como '1A'.
Existe uma maneira no SQL de remover facilmente os zeros à esquerda dessa maneira? Eu sei que existe uma RTRIM
função, mas isso parece apenas remover espaços.
sql
sql-server
tsql
Tim C
fonte
fonte
Respostas:
fonte
fonte
retornos
N0Z
, isto é, eliminarão os zeros à esquerda e qualquer coisa que vier antes deles.fonte
Eu tinha a mesma necessidade e usei isto:
fonte
Se você quiser que a consulta retorne um 0 em vez de uma string de zeros ou qualquer outro valor, você pode transformar isso em uma instrução case como esta:
fonte
Você pode usar isto:
fonte
Você pode tentar isso - é necessário um cuidado especial para remover apenas zeros à esquerda, se necessário:
Ou você pode simplesmente ligar
fonte
Aqui está a função de valor escalar SQL que remove zeros à esquerda da string:
fonte
Caso você queira remover os zeros iniciais de uma string de tamanho desconhecido.
Você pode considerar o uso do comando STUFF.
Aqui está um exemplo de como isso funcionaria.
Veja no violinista vários cenários que ele cobrirá
https://dbfiddle.uk/?rdbms=sqlserver_2012&fiddle=14c2dca84aa28f2a7a1fac59c9412d48
fonte
Remover o 0 inicial do mês seguinte com certeza funcionará.
Basta substituir
GETDATE()
pelo campo de data de sua tabela.fonte
você pode tentar isso
SELECT REPLACE(columnname,'0','') FROM table
fonte
Para remover 0 à esquerda, você pode multiplicar a coluna de número por 1 Ex: Selecione (Nome da coluna * 1)
fonte
Este é um script Sql que emula a funcionalidade do comando TRIM em tsql antes de 2017, é basicamente o mesmo que as outras recomendações, mas as outras substituem por um único caractere incomum que ainda pode ocorrer, '[Rtrim]' ou '[ Ltrim] 'ainda poderia ocorrer no texto, mas substituir o chapéu por um texto único, por exemplo, um Guid resolveria esse problema.
Eu não testei em relação à velocidade
fonte
Peguei emprestado das idéias acima. Isso não é rápido nem elegante. mas é preciso.
CASO
FIM
fonte
fonte
Isso deve servir.
fonte
select trim(leading '0' from '001A');
, mas OP estava pedindo o SQL Server.