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

[SOLUCIONADO] Pasar antiguos datos char a varchar, es posible?

Estas en el tema de Pasar antiguos datos char a varchar, es posible? en el foro de SQL Server en Foros del Web. Buenas a todos, os explico..El problema que tengo es que hay una columna en la bdd con la que trabajo que es char(30), esta columna ...
  #1 (permalink)  
Antiguo 20/08/2014, 08:55
Avatar de adrirs11  
Fecha de Ingreso: diciembre-2012
Ubicación: BCN
Mensajes: 107
Antigüedad: 11 años, 11 meses
Puntos: 1
Pasar antiguos datos char a varchar, es posible?

Buenas a todos, os explico..El problema que tengo es que hay una columna en la bdd con la que trabajo que es char(30), esta columna solo contiene números de teléfono, el error del que hizo la bdd es que lo puso a char(30) en vez de a varchar(30), y cuando haces una petición a un web service te devuelve longitud 30 en vez de los 9 que están ocupados. Acabo de cambiar la columna a varchar y me devuelve la longitud que está ocupada, en este caso 9 ya que se trata de un número de teléfono español.

Pues el problema es que los nuevos datos que inserto ya me los devuelve bien, pero los antiguos antes de cambiar la columna de tipo me sigue devolviendo longitud 30. Mi pregunta es, ¿Hay manera de cambiar estos datos char a varchar?¿O me tengo que currar un programa en vb.net para que me lo haga?

Gracias, saludos.
  #2 (permalink)  
Antiguo 20/08/2014, 11:22
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Pasar antiguos datos char a varchar, es posible?

Código SQL:
Ver original
  1. UPDATE TABLE
  2. SET DATA=CONVERT(VARCHAR(30),DATA)

saludos!!!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 21/08/2014, 04:24
Avatar de adrirs11  
Fecha de Ingreso: diciembre-2012
Ubicación: BCN
Mensajes: 107
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: Pasar antiguos datos char a varchar, es posible?

Creo que no me has entendido... Ya lo pasé a varchar, pero los campos que se introdujeron cuando la columna era char, me sigue devolviendo longitud 30, es decir, tiene el espacio reservado y de los 30 carácteres, mas de la mitad son espacios en blanco.

La solución seria hacer un update por cada row de esa columna...pero la base de datos es bastante grande. Y la pregunta es si hay algún script que me solución este problema...o me tengo que currar un programa para que me haga los updates uno a uno?
  #4 (permalink)  
Antiguo 21/08/2014, 07:06
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Pasar antiguos datos char a varchar, es posible?

cuando hagas tu select usa ltrim(rtrim(campo)), y si te entendi, solo que no te di la respuesta correcta :P

Aqui un escenario parecido al tuyo :)
Código SQL:
Ver original
  1. CREATE TABLE #temp(
  2. dato CHAR (30)
  3. )
  4.  
  5. INSERT INTO #temp VALUES ('ABC')
  6. INSERT INTO #temp VALUES ('ABCD')
  7. INSERT INTO #temp VALUES ('ABCDE')
  8.  
  9. SELECT DATALENGTH(dato) FROM #temp
  10.  
  11. ALTER TABLE #temp ALTER COLUMN dato VARCHAR(30)
  12.  
  13. SELECT DATALENGTH(dato) FROM #temp
  14.  
  15. UPDATE #temp
  16. SET dato=ltrim(rtrim(dato))
  17.  
  18. SELECT DATALENGTH(dato) FROM #temp


Actualizar row by row????? Que acaso eres developer???? ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 21/08/2014 a las 07:24
  #5 (permalink)  
Antiguo 21/08/2014, 08:03
Avatar de adrirs11  
Fecha de Ingreso: diciembre-2012
Ubicación: BCN
Mensajes: 107
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: Pasar antiguos datos char a varchar, es posible?

Creo que esto que me das si que funcionará, pero seguro que no se me come los espacios del medio verdad?

En esta columna tengo datos como estos:

'653892312 '
'645 323 233 '
'665746253'
'657 432 142'
'690 34 12 78'
  #6 (permalink)  
Antiguo 21/08/2014, 08:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Pasar antiguos datos char a varchar, es posible?

LTRIM elimina espacios en blanco a la izquierda (L de LEFT).

RTRIM elimina espacios en blanco a la derecha (R de RIGHT).

Ni el TRIM, ni RTRIM, ni tampoco LTRIM afectan jamás a los espacios intermedios, en ningun DBMS...

Más alla de que se trata de una denominación bastante estandarizada en diferentes DBMS, soin dudas que puedes despejar leyendo el manual de referencia. Es lo que hacemos todos con cosas así, no es cuestión de ser principiante o no.

http://msdn.microsoft.com/es-AR/library/ms177827.aspx
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 21/08/2014, 08:16
Avatar de adrirs11  
Fecha de Ingreso: diciembre-2012
Ubicación: BCN
Mensajes: 107
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: Pasar antiguos datos char a varchar, es posible?

Okey, lo tenia bastante claro, pero no es una base de datos mía, y si se lía, destrozo la empresa... siempre hay que ir con pies de plomo, gracias a ambos!

Etiquetas: char, columna, varchar
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 22:19.