No se si utilizar replace o decode, substr, instr

Mi pregunta es algo complicada, al menos para mi que estoy aprendiendo SQL actualmente, bien, veamos..
He de seleccionar de la tabla emple para cada empleado cuyo apellido (columna apellido), contenga una N queremos que nos devuelva nnn pero solo para la primera ocurrencia de la N. La salida debe estar ordenada por apellido ascendentemente. Es decir hay que sustituir la primera N del apellido (si la hubiera) por la cadena nnn. Con replace en el caso de Fernández al tener 2 N ambas las cambia, no solo la primera, no acepta más argumentos esta orden, y una ultima pregunta, como se ordena una salida por 2 columnas, (order by Apellidos, ¿salario asc)?

2 respuestas

Respuesta
Tienes que ver con un instr para que puedas contar el número de ocurrencias de la letra a buscar y con ello reemplazar como lo quieras, la forma de ordenación si es correcta, solamente se separan los campos de ordenación por una coma y listo.
Respuesta
-1
Es sencillo, la función REPLACE (siempre hablando en oracle) tiene tres parámetros, el primero la cadena con la que operar, el segundo la cadena a buscar y el tercero la cadena a reemplazar.
Así, la orden
SELECT REPLACE('FERNANDEZ','N','nnn') FROM DUAL
Produce el siguiente resultado:
FERnnnAnnnDEZ
Evidentemente se que con REPLACE hace que en lugar de cada N de la palabra aparezca 'nnn', mi pregunta era para que solo cogiera la primera ocurrencia, es decir solo sustituyera la primera N por nnn y las demás las dejase como estaban. Gracias de nuevo
Tienes razón, siento haberme columpiado, voy a empezar a mirártelo, ¿ok? Algo habrá...
En lo de ordenar la salida por dos columnas, no entiendo lo que dices pues tal y como lo pones está bien así. ¿Qué es lo que te sucede?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas