Ver Mensaje Individual
  #10  
Antiguo 25-04-2018
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Perdón, el ejemplo que di anteriormente no estaba del todo bien.
Debes concatenar el 0 al resultado del substring y no antes:
Me explico
  1. Primero obtenes los dos primeros dígitos del código postal. Eso lo obtienes mediante SUBSTRING.
  2. Luego le agregas un '0' delante, mediante la concatencacion.
  3. Finalmente conviertes esos tres dígitos ('0' + resultado de SUBSTRING) a integer mediante el CAST.
La idea es que si el SUBSTRING te devuelve "vacío", por lo menos haya un '0' para convertir.

Código SQL [-]
/* CAST('0'  + primeros dos dígitos del código postal AS INTEGER) */

SELECT CODIGO, NOMBRE, CPOSTAL, CAST('0' || SUBSTRING(CPOSTAL FROM 1 FOR 2) AS INTEGER)
FROM POBLACION
WHERE
CAST('0' || SUBSTRING(CPOSTAL FROM 1 FOR 2) AS INTEGER) NOT IN (SELECT CODIGO
                                                                FROM PROVINCIA
                                                                WHERE
                                                                CODIGO > 0 AND
                                                                CODIGO < 99)
ORDER BY CPOSTAL, NOMBRE, CODIGO
Responder Con Cita