Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Problema con una variable de sql server

Estas en el tema de Problema con una variable de sql server en el foro de SQL Server en Foros del Web. Tengo un problema, necesito poder guardar en una variable o en una tabla de un solo registro, mas caracteres que los que puedo meter en ...
  #1 (permalink)  
Antiguo 08/09/2011, 14:00
 
Fecha de Ingreso: junio-2009
Mensajes: 26
Antigüedad: 14 años, 11 meses
Puntos: 0
Problema con una variable de sql server

Tengo un problema, necesito poder guardar en una variable o en una tabla de un solo registro, mas caracteres que los que puedo meter en un varchar, osea mas de 100mil caracteres si es posible. Que no sea text ya que no puedo hacer el casteo de otras variables a text.

De antemano agradezco la ayuda
  #2 (permalink)  
Antiguo 08/09/2011, 14:28
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Problema con una variable de sql server

varchar [ ( n | max ) ]

Datos de caracteres no Unicode de longitud variable. n puede ser un valor entre 1 y 8.000. max indica que el tamaño de almacenamiento máximo es de 2^31-1 bytes. El tamaño de almacenamiento es la longitud real de los datos especificados + 2 bytes. Los datos especificados pueden tener una longitud de 0 caracteres. Los sinónimos ISO de varchar son char varying o character varying.
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 08/09/2011, 14:29
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Problema con una variable de sql server

varchar [ ( n | max ) ]

Datos de caracteres no Unicode de longitud variable. n puede ser un valor entre 1 y 8.000. max indica que el tamaño de almacenamiento máximo es de 2^31-1 bytes. El tamaño de almacenamiento es la longitud real de los datos especificados + 2 bytes. Los datos especificados pueden tener una longitud de 0 caracteres. Los sinónimos ISO de varchar son char varying o character varying.
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 08/09/2011, 14:33
 
Fecha de Ingreso: junio-2009
Mensajes: 26
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Problema con una variable de sql server

el problema es que necesito almacenar mas de 100 mil caracteres en una misma variable, no puede ser varchar porque solo almacena un maximo creo que de 8,000 caracteres.
  #5 (permalink)  
Antiguo 08/09/2011, 14:38
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Problema con una variable de sql server

max indica que el tamaño de almacenamiento máximo es de 2^31-1 bytes

¿No te sirve un VARCHAR(MAX)?
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 08/09/2011, 14:40
 
Fecha de Ingreso: junio-2009
Mensajes: 26
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Problema con una variable de sql server

no no me sirve varchar(MAX), no almacena la cantidad que necesito!
  #7 (permalink)  
Antiguo 08/09/2011, 14:44
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Problema con una variable de sql server

Ha caray, 2^31-1 bytes, ¿cuanto es esto?
__________________
MCTS Isaias Islas
  #8 (permalink)  
Antiguo 08/09/2011, 14:48
 
Fecha de Ingreso: junio-2009
Mensajes: 26
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Problema con una variable de sql server

seria tan sencillo como probarlo de la siguiente manera:

declare @var varchar(100000)

no acepta esa cantidad 100000, aparece un error, diciendo que el maximo es 8000
  #9 (permalink)  
Antiguo 08/09/2011, 14:52
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 9 meses
Puntos: 774
Respuesta: Problema con una variable de sql server

2 a las 31 es 20000000000000000000000000000000, que creo que es mas que 100,000 caracteres....seguro que no cabe en un varchar(max)??? y para que quieres los 100,000?? y para probar no tienes que poner un varchar(100000) no te va a dejar el maximo son 8000 pero el max almacena valores mas grandes pruebale ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #10 (permalink)  
Antiguo 08/09/2011, 14:54
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Problema con una variable de sql server

Gracias Libras, la cantidad exacta son:

2,147,483,647 Caracteres

Digo, por si el amigo no sabe elevar a la potencia.

Saludos
__________________
MCTS Isaias Islas
  #11 (permalink)  
Antiguo 08/09/2011, 15:53
 
Fecha de Ingreso: junio-2009
Mensajes: 26
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Problema con una variable de sql server

les enviare el codigo para que hagan una pequeña prueba
DECLARE @NUM INT
,@NUM1 INT
DECLARE @VAR VARCHAR(MAX)
SET @NUM=1
SET @NUM1=40000
set @VAR=''

WHILE @NUM<@NUM1
BEGIN
SET @VAR=@VAR + CAST(@num AS VARCHAR) + ', '
END
print @var

es tan sencillo como eso!!, lo que acepta son 43679 caracteres!!
  #12 (permalink)  
Antiguo 08/09/2011, 15:59
 
Fecha de Ingreso: junio-2009
Mensajes: 26
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Problema con una variable de sql server

digo, por si el amigo no sabe como hacer una sencilla prueba con un poquito de codigo sql!!
  #13 (permalink)  
Antiguo 08/09/2011, 16:03
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 9 meses
Puntos: 774
Respuesta: Problema con una variable de sql server

Lo que estas haciendo ahi es imprimir en el bufer del sql la variable @var y ahi si no te va a dejar poner los 100,000 caracteres, pero si puedes almacenar mas de 100,000 caracteres en una variable varchar(max)

checate esto:


DECLARE @NUM decimal
,@NUM1 decimal
DECLARE @VAR VARCHAR(MAX)
SET @NUM=1
SET @NUM1=100000
set @VAR=''

WHILE @NUM<@NUM1
BEGIN
SET @VAR=@VAR + CAST(@num AS VARCHAR) + ', '
set @num1=@num1-1
END
select len(@var)

resultado:299996


Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #14 (permalink)  
Antiguo 08/09/2011, 16:08
 
Fecha de Ingreso: junio-2009
Mensajes: 26
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Problema con una variable de sql server

si se hace un select de ese resultado o un print, y ese resultado se pone en un contador de caracteres, notaras que solo son 43,679 caracteres
  #15 (permalink)  
Antiguo 08/09/2011, 16:14
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 9 meses
Puntos: 774
Respuesta: Problema con una variable de sql server

Sql tiene un delimitador de carateres a presentar en mi caso 65535 fijate en las opciones de tu sql para que veas el total de caracteres que puedes almacenar y presentar en el buffer es por eso que si haces un select @var nada mas te va a presentar el numero que mencionas, pero si haces un len longitud de cadena el resultado es el total de caracteres almacenados en la variable :)

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #16 (permalink)  
Antiguo 08/09/2011, 16:49
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 10 meses
Puntos: 180
Respuesta: Problema con una variable de sql server

ARajAr

¿No entiendo del porque insiste en hacer una VERDAD ABSOLUTA donde no la hay?

Usted viene, pregunta, se le asesora y nos quiere convencer de lo contrario.

Si no acepta que el tipo de dato VARCHAR(MAX) tiene como maximo de capacidad de 2,147,483,647 Caracteres, de acuerdo, respetamos su opinion.

En cuanto a la prueba que usted hace, debe entender que el desplegado de informacion del analizador de consultas tiene un limite, eso no es indicativo, que lo que muestra, es lo que se tenga en la variable, haga usted un simple LEN(VARIABLE), como bien lo menciona nuestro amigo LIBRAS, o bien haga DATALENGTH(VARIABLE)
__________________
MCTS Isaias Islas

Última edición por iislas; 08/09/2011 a las 17:00

Etiquetas: sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:07.