[OFF]FORMAT EM SQLSEVER
Bom dia!!!
Pessoal, alguem sabe a funcao equivalente ao format do VB/Access no sqlserver
Por ex:
Dim a,b as string
a = 1
b = format (a,'0000')
a teria o valor de 1
e b teria o valor de 0001
Alguem sabe qual a funcao equivalente no sqlserver??
Abracos
Alexandre
Pessoal, alguem sabe a funcao equivalente ao format do VB/Access no sqlserver
Por ex:
Dim a,b as string
a = 1
b = format (a,'0000')
a teria o valor de 1
e b teria o valor de 0001
Alguem sabe qual a funcao equivalente no sqlserver??
Abracos
Alexandre
Cara, não existe.
Falho, mas não existe mesmo.
Falho, mas não existe mesmo.
bom, dentro da clásula SQL vc pode juntar outras funções para criar o mesmo efeito da função FORMAT, abaixo segue um modelo:
espero ter ajudado
SELECT STUFF('0000', 5 - LEN(CAST(Codigo AS nvarchar(4))), LEN(CAST(Codigo AS nvarchar(4))), CAST(Codigo AS nvarchar(4))) AS CodigoFormatado FROM Tabela;
espero ter ajudado
Ehê Tio Max, o rei da gambiarra!!!
Fiz uma consulta Frankenstein pra fazer esse format como você pediu.
Explicando:
[txt-color=#0000ff]Substring[/txt-color] é uma função do SQLServer idêntica ao Mid do VB;
[txt-color=#0000ff]'0000' + Convert(Char(4), codigofabricante)[/txt-color] Acrescenta os '0000' a uma coluna texto com 4 caracteres (conversão da coluna numerica codigofabricante para Char(4) com a função Convert do SQLServer). Para um registro "54" ter~iamos como resultado "000054"
[txt-color=#0000ff]Len(codigofabricante)+1[/txt-color] é a posição inicial da substring que será obtida da operação anterior (para "000054", iniciarÃamos a substring no caractere 3 - o terceiro 0)
[txt-color=#0000ff]4[/txt-color] tamanho da cadeia de caracteres desejado - como você estipulou, fiz com 4.
Essa consulta funciona no SQLServer 7. Não tenho versões mais novas instaladas onde estou hoje, então cabe a você testá-la. Não me recordo se houve modificações no nome das funções Substring e Len. A Substring é adotada pela ANSI-SQL 2003, então deve continuar igual. A Len, na norma, é Length.
Fiz uma consulta Frankenstein pra fazer esse format como você pediu.
Select Substring ('0000' + Convert(Char(4), codigofabricante), Len(codigofabricante)+1, 4) From Mercadoria
Explicando:
[txt-color=#0000ff]Substring[/txt-color] é uma função do SQLServer idêntica ao Mid do VB;
[txt-color=#0000ff]'0000' + Convert(Char(4), codigofabricante)[/txt-color] Acrescenta os '0000' a uma coluna texto com 4 caracteres (conversão da coluna numerica codigofabricante para Char(4) com a função Convert do SQLServer). Para um registro "54" ter~iamos como resultado "000054"
[txt-color=#0000ff]Len(codigofabricante)+1[/txt-color] é a posição inicial da substring que será obtida da operação anterior (para "000054", iniciarÃamos a substring no caractere 3 - o terceiro 0)
[txt-color=#0000ff]4[/txt-color] tamanho da cadeia de caracteres desejado - como você estipulou, fiz com 4.
Essa consulta funciona no SQLServer 7. Não tenho versões mais novas instaladas onde estou hoje, então cabe a você testá-la. Não me recordo se houve modificações no nome das funções Substring e Len. A Substring é adotada pela ANSI-SQL 2003, então deve continuar igual. A Len, na norma, é Length.
é, eu tava tentando fazer uma gambiarra fugindo do substring..
Eu uso da seguinte forma e tem dado certo nunca tive problemas:
Eu utilizo a função right mais o campo e com quantos zeros que eu quero que retorne:
--Neste exemplo eu coloco formatando com 5 zeros
SELECT Right('00000' + Cli_codigo, 5) FROM clientes
--Neste exemplo eu coloco formatando com 3 zeros
SELECT Right('000' + Cli_codigo, 3) FROM clientes
--Neste exemplo eu coloco formatando com 2 zeros
SELECT Right('00' + Cli_codigo, 2) FROM clientes
Qualquer dúvida poste novamente.....
Eu utilizo a função right mais o campo e com quantos zeros que eu quero que retorne:
--Neste exemplo eu coloco formatando com 5 zeros
SELECT Right('00000' + Cli_codigo, 5) FROM clientes
--Neste exemplo eu coloco formatando com 3 zeros
SELECT Right('000' + Cli_codigo, 3) FROM clientes
--Neste exemplo eu coloco formatando com 2 zeros
SELECT Right('00' + Cli_codigo, 2) FROM clientes
Qualquer dúvida poste novamente.....
Tópico encerrado , respostas não são mais permitidas