Cadena de caracteres

24/11/2004 - 11:11 por María Eugenia Ryan | Informe spam
Hola a todos.

En una vista he creado una columna como la siguiente:

RIGHT (STR(dbo.GASTOS_PRESUP.Sub_Funcion); 1) + RIGHT
(STR(dbo.GASTOS_PRESUP.Inciso); 2) + RIGHT
(STR(dbo.GASTOS_PRESUP.Part_Princ); 2) + RIGHT
(STR(dbo.GASTOS_PRESUP.Sub_Parc); 2)

Los campos son numéricos por eso los paso a string, el tema es que me da
como resultado: 0 4 2 1

ó sea Sub_Funcion es 0
pero Inciso quiero que salga 04 y no sé como darle el formato para que no
salga el espacio en blanco

ó sea en lugar de 0 4 2 1 quiero que salga
0040201


¿Qué función tengo que usar?. Gracias.

María Eugenia Ryan

Preguntas similare

Leer las respuestas

#1 María Eugenia Ryan
24/11/2004 - 11:24 | Informe spam
Ya lo solucioné, gracias.
Pongo Replace((STR(dbo.GASTOS_PRESUP.Inciso); 2), ' ','0')

María Eugenia


"María Eugenia Ryan" escribió en el mensaje
news:
Hola a todos.

En una vista he creado una columna como la siguiente:

RIGHT (STR(dbo.GASTOS_PRESUP.Sub_Funcion); 1) + RIGHT
(STR(dbo.GASTOS_PRESUP.Inciso); 2) + RIGHT
(STR(dbo.GASTOS_PRESUP.Part_Princ); 2) + RIGHT
(STR(dbo.GASTOS_PRESUP.Sub_Parc); 2)

Los campos son numéricos por eso los paso a string, el tema es que me da
como resultado: 0 4 2 1

ó sea Sub_Funcion es 0
pero Inciso quiero que salga 04 y no sé como darle el formato para que no
salga el espacio en blanco

ó sea en lugar de 0 4 2 1 quiero que salga
0040201


¿Qué función tengo que usar?. Gracias.

María Eugenia Ryan


Respuesta Responder a este mensaje
#2 María Eugenia Ryan
24/11/2004 - 11:42 | Informe spam
Gracias chicos...

"Gustavo Larriera [MVP]" escribió en el mensaje
news:%
Usa la función REPLICATE para rellenar con 0 por izquierda. Puedes basarte
en esta idea tomada de los Books Online (BOL):

USE tempdb
GO

CREATE TABLE t1
(
c1 varchar(3),
c2 char(3)
)
GO
INSERT INTO t1 VALUES ('2', '2')
INSERT INTO t1 VALUES ('37', '37')
INSERT INTO t1 VALUES ('597', '597')
GO
SELECT REPLICATE('0', 3 - DATALENGTH(c1)) + c1 AS [Varchar Column],
REPLICATE('0', 3 - DATALENGTH(c2)) + c2 AS [Char Column]
FROM t1
GO



Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"María Eugenia Ryan" wrote in message
news:
> Hola a todos.
>
> En una vista he creado una columna como la siguiente:
>
> RIGHT (STR(dbo.GASTOS_PRESUP.Sub_Funcion); 1) + RIGHT
> (STR(dbo.GASTOS_PRESUP.Inciso); 2) + RIGHT
> (STR(dbo.GASTOS_PRESUP.Part_Princ); 2) + RIGHT
> (STR(dbo.GASTOS_PRESUP.Sub_Parc); 2)
>
> Los campos son numéricos por eso los paso a string, el tema es que me da
> como resultado: 0 4 2 1
>
> ó sea Sub_Funcion es 0
> pero Inciso quiero que salga 04 y no sé como darle el formato para que


no
> salga el espacio en blanco
>
> ó sea en lugar de 0 4 2 1 quiero que salga
> 0040201
>
>
> ¿Qué función tengo que usar?. Gracias.
>
> María Eugenia Ryan
>
>


Respuesta Responder a este mensaje
#3 Carlos Sacristan
24/11/2004 - 15:17 | Informe spam
Si por ejemplo el número máximo de caracteres que tendría fueran dos, la
sintaxis sería así:

CAST(dbo.GASTOS_PRESUP.Sub_Funcion AS VARCHAR(1)) +
RIGHT('00'+CAST(dbo.GASTOS_PRESUP.Inciso AS VARCHAR(2)), 2) +
RIGHT('00'+CAST(dbo.GASTOS_PRESUP.Part_Princ AS VARCHAR(2)), 2) +
RIGHT('00'+CAST(dbo.GASTOS_PRESUP.Sub_Parc AS VARCHAR(2)), 2)



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"María Eugenia Ryan" escribió en el mensaje
news:
Hola a todos.

En una vista he creado una columna como la siguiente:

RIGHT (STR(dbo.GASTOS_PRESUP.Sub_Funcion); 1) + RIGHT
(STR(dbo.GASTOS_PRESUP.Inciso); 2) + RIGHT
(STR(dbo.GASTOS_PRESUP.Part_Princ); 2) + RIGHT
(STR(dbo.GASTOS_PRESUP.Sub_Parc); 2)

Los campos son numéricos por eso los paso a string, el tema es que me da
como resultado: 0 4 2 1

ó sea Sub_Funcion es 0
pero Inciso quiero que salga 04 y no sé como darle el formato para que no
salga el espacio en blanco

ó sea en lugar de 0 4 2 1 quiero que salga
0040201


¿Qué función tengo que usar?. Gracias.

María Eugenia Ryan


Respuesta Responder a este mensaje
#4 Gustavo Larriera [MVP]
24/11/2004 - 15:22 | Informe spam
Usa la función REPLICATE para rellenar con 0 por izquierda. Puedes basarte
en esta idea tomada de los Books Online (BOL):

USE tempdb
GO

CREATE TABLE t1
(
c1 varchar(3),
c2 char(3)
)
GO
INSERT INTO t1 VALUES ('2', '2')
INSERT INTO t1 VALUES ('37', '37')
INSERT INTO t1 VALUES ('597', '597')
GO
SELECT REPLICATE('0', 3 - DATALENGTH(c1)) + c1 AS [Varchar Column],
REPLICATE('0', 3 - DATALENGTH(c2)) + c2 AS [Char Column]
FROM t1
GO



Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"María Eugenia Ryan" wrote in message
news:
Hola a todos.

En una vista he creado una columna como la siguiente:

RIGHT (STR(dbo.GASTOS_PRESUP.Sub_Funcion); 1) + RIGHT
(STR(dbo.GASTOS_PRESUP.Inciso); 2) + RIGHT
(STR(dbo.GASTOS_PRESUP.Part_Princ); 2) + RIGHT
(STR(dbo.GASTOS_PRESUP.Sub_Parc); 2)

Los campos son numéricos por eso los paso a string, el tema es que me da
como resultado: 0 4 2 1

ó sea Sub_Funcion es 0
pero Inciso quiero que salga 04 y no sé como darle el formato para que no
salga el espacio en blanco

ó sea en lugar de 0 4 2 1 quiero que salga
0040201


¿Qué función tengo que usar?. Gracias.

María Eugenia Ryan


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida