[OFF]FORMAT EM SQLSEVER

ICHIHARA 02/10/2006 11:47:47
#174966
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


LIONHEART 02/10/2006 12:21:22
#174985
Cara, não existe.
Falho, mas não existe mesmo.
FFCOUTO 02/10/2006 15:18:08
#175041
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:


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
USUARIO.EXCLUIDOS 02/10/2006 15:45:38
#175055
Resposta escolhida
Ehê Tio Max, o rei da gambiarra!!!

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.
LIONHEART 02/10/2006 16:04:40
#175065
é, eu tava tentando fazer uma gambiarra fugindo do substring..
ALEXANDREMORAIS 03/10/2006 08:17:06
#175179
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.....
Tópico encerrado , respostas não são mais permitidas