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

Cambiar parte de contenido de tabla y mantener otro

Estas en el tema de Cambiar parte de contenido de tabla y mantener otro en el foro de SQL Server en Foros del Web. Hola, tengo un pequeño problemita con una base de datos de mssql 2008 server tengo la db llamada users una tabla llamada dbo.user_data y una ...
  #1 (permalink)  
Antiguo 19/06/2012, 07:10
 
Fecha de Ingreso: julio-2009
Mensajes: 121
Antigüedad: 14 años, 8 meses
Puntos: 1
Cambiar parte de contenido de tabla y mantener otro

Hola, tengo un pequeño problemita con una base de datos de mssql 2008 server

tengo la db llamada users una tabla llamada dbo.user_data y una columna llamada acc_name...

en acc_name tengo todos los usuarios con el nombre: USUARIO1...USUARIO2...USUARIO3...USUARIO4 etc... como podria cambiar la palabra USUARIO por EXT y que mantengan el numero que tiene al lado... por ejemplo...

USUARIO1=EXT1
USUARIO53=EXT53

y asi...


Saludos.
  #2 (permalink)  
Antiguo 19/06/2012, 07:24
Avatar de ramirezmario7  
Fecha de Ingreso: febrero-2008
Ubicación: Medellín
Mensajes: 336
Antigüedad: 16 años, 2 meses
Puntos: 56
Respuesta: Cambiar parte de contenido de tabla y mantener otro

Hola.
Prueba así
Código:
UPDATE
	dbo.USER_DATA
SET
	ACC_NAME = 'EXT'+RIGHT(ACC_NAME,LEN(ACC_NAME)-7)
__________________
Mario Ramírez
Desarrollador .NET MCTS
https://www.mcpvirtualbusinesscard.c...nteractivecard
  #3 (permalink)  
Antiguo 19/06/2012, 07:37
 
Fecha de Ingreso: julio-2009
Mensajes: 121
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Cambiar parte de contenido de tabla y mantener otro

Hola, mmm pero no deberia estar definido la palabra USUARIO en algun lugar? para cambiarla por EXT?

y otra preguntita, eso me cambiaria TODAS las entradas verdad? porque tengo desde USUARIO1 hasta USUARIO3568...
  #4 (permalink)  
Antiguo 19/06/2012, 07:51
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, 8 meses
Puntos: 774
Respuesta: Cambiar parte de contenido de tabla y mantener otro

el codigo que te pasaron soluciona el problema que planteas ya que va a reemplazar los datos en la columna de la posicion 1 hasta la 7 ("usuario") y va a dejar la parte numerica(siendo que todos tus usuarios empiecen con "usuario") y lo va a remplazar por "ext"+la parte numerica, y si el codigo te sirve para cualquier incidencia de usuario+numero :), por eso no se define o se maneja alguna variable con la cadena "usuario" como tal

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 19/06/2012, 08:12
 
Fecha de Ingreso: julio-2009
Mensajes: 121
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Cambiar parte de contenido de tabla y mantener otro

Mmm ejecuto la query y me tira el siguiente error

Código:
Msg 536, Level 16, State 3, Line 1
Invalid length parameter passed to the RIGHT function.
The statement has been terminated.
encontre el problema, es que hay otros usuarios que no deben ser cambiados, y no tienen la palabra USUARIO y algunos tienen 4 letras nomas... solo debo cambiar los que dicen USUARIO nomas...

Última edición por sk0rpi0n; 19/06/2012 a las 08:23
  #6 (permalink)  
Antiguo 19/06/2012, 08:32
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, 8 meses
Puntos: 774
Respuesta: Cambiar parte de contenido de tabla y mantener otro

a weno asi ya cambia la cosa si vamos por la palabra usuario entonces podemos hacer algo asi:

Código SQL:
Ver original
  1. CREATE TABLE #temp(
  2. DATA VARCHAR(20)
  3. )
  4.  
  5. INSERT INTO #temp VALUES ('usuario1')
  6. INSERT INTO #temp VALUES ('user2')
  7. INSERT INTO #temp VALUES ('usuario3')
  8. INSERT INTO #temp VALUES ('usuario45678')
  9. INSERT INTO #temp VALUES ('micasa1')
  10.  
  11.  
  12. UPDATE #temp
  13. SET DATA=t1.campo
  14. FROM(
  15. SELECT
  16. CASE WHEN
  17. patindex('%usuario%', DATA)=1 THEN
  18. REPLACE(DATA,'usuario','ext') ELSE DATA END AS campo,patindex('%usuario%', DATA) AS pat,DATA
  19. FROM #temp) AS t1 WHERE t1.DATA=#temp.DATA
  20.  
  21. SELECT * FROM #temp
  22.  
  23. Resultado:
  24.  
  25. ext1
  26. user2
  27. ext3
  28. ext45678
  29. micasa1

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: contenido, parte, server, tabla
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 07:19.