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

[SOLUCIONADO] UPDATE Replace parte de un campo

Estas en el tema de UPDATE Replace parte de un campo en el foro de Mysql en Foros del Web. Hola, estoy tratando de hacer un update de los 2 primeros caracteres de un campo cuando es igual a 11. Son numeros de celular, que ...
  #1 (permalink)  
Antiguo 07/08/2015, 07:08
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años, 7 meses
Puntos: 1
UPDATE Replace parte de un campo

Hola,
estoy tratando de hacer un update de los 2 primeros caracteres de un campo cuando es igual a 11.

Son numeros de celular, que inician aveces con 11..en ese caso debo modificarlo por 15.

Encontre esto...

Código MySQL:
Ver original
  1. UPDATE clientes SET celular = REPLACE(celular, '11', '15')

El problema es que solo necesito modificar si EMPIEZA con 11. Si el 11 esta dentro del numero (por eje: 1500112195), no debe ser modificado.

Alguien sabe como aplicarlo solo a los 2 primeros caracteres de un campo?

Gracias!!!
__________________
Bye!
  #2 (permalink)  
Antiguo 07/08/2015, 07:18
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: UPDATE Replace parte de un campo

Cita:
Alguien sabe como aplicarlo solo a los 2 primeros caracteres de un campo?
@Pelao: Ese tipo de dudas son para consultar el manual de referencia. Específicamente la sección dedicada a las funciones de cadena. Bueno, suponiendo que hayas almacenado los celulares como corresponde: en un VARCHAR de 14 caracteres de longitud mínima (longitud máxima de un numero telefónico mundialmente).

MySQL 5.6 Reference Manual :: 12 Functions and Operators :: 12.5 String Functions
Existen al menos tres funciones que pueden realizar la tarea: LEFT(), MID() y SUBSTRING(), pero para que haga lo que TU quieres, debes poner la condición en el WHERE, usando la misma función.

Ahora bien, hay que recordar también que NO todos los números telefónicos de celulares en un mismo país poseen la misma longitud, ya que hay localidades donde los números tienen 8 dígitos, y otras 7, pero el prefijo "15" es de uso general.
¿Eso lo tuviste en cuenta?
Eso sin contar además que técnicamente no hay diferencia en la longitud de un numero de linea fija y uno móvil de la misma ciudad. El código "15" sólo le representa a la plataforma que el numero que se desea acceder está en la red local de telefonía celular, pero si el numero corresponde a una linea fija, el "11" es válido para al menos una localidad. Así que la validación del numero la tendrás que hacer en la aplicación, porque luego se vuelve algo complicado si no conoces los rangos numéricos asignados a la plataforma móvil...

La quiery debe considerar todas las posibilidades, a fin de evitar errores.

En principio, la solucion está en el uso de las dos funciones que te menciono, pero el resto es algo que deberás evalaur tu mismo para tu sistema.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/08/2015, 07:28
 
Fecha de Ingreso: abril-2003
Mensajes: 260
Antigüedad: 21 años, 7 meses
Puntos: 1
Respuesta: UPDATE Replace parte de un campo

Hola, efectivamente es un VARCHAR(20).

Son todos teléfonos de capital federal, algunos son fijos y otros celulares. Ninguno lleva característica con lo cual son de 8 o 10 caracteres todos los nros.

Suponia que podia contar los 2 primeros caracteres cuando eran iguales a 11, para poder reemplazarlos por 15. Sabiendo que ningun tel fijo de capital inicia con 11.

En funcion de esto cual crees que seria la mejor funcion para usar?

Gracias nuevamente.
__________________
Bye!
  #4 (permalink)  
Antiguo 07/08/2015, 07:42
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: UPDATE Replace parte de un campo

Cita:
En funcion de esto cual crees que seria la mejor funcion para usar?
Da igual. para tu caso, las tres realizan la misma tarea.

Si quieres aprender, prueba las tres. Es lo que yo haría en tu caso.

Por allí masivamente LEFT es más performante.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campo, parte, replace, update
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 14:03.