Dos opciones para un sola columna en una vista!

Nuevamente tu ayuda es requerida por este terrenal:
Espero que recuerdes la yuda que me brindastes. Fue esta...
______________
Espero que esta consulta te sirva. Suponiendo que necesitas la información de las Columnas A y B como carácter (varchar) hago la conversión primero a entero y luego la regreso a varchar. Si la necesitas como enteri (bigint) le puedes quitar el cast más externo en cada una de las columnas (A y B)
SELECT    cast(cast(Columna_C as bigint) as varchar) as Column_A,
        cast(cast(substring(Columna_C, charindex('445', Columna_C)+3, len(Columna_C))  as bigint) as varchar) as Column_B
FROM    Tabla_C
______________
Y haciéndole los cambios me fusionó pero ahora le surgió otro problema es que tal como evalúa el 445 también debe de evaluar el 750. Ya lo intenté de la siguiente forma:
charindex('[47][45][50]', Columna_C) + 3 pero nada! ¿Qué otra idea me podría brindar?

1 Respuesta

Respuesta
1
Yo como lo resolvería es metiendo un CASE que es una operador de opción múltiple ya que el CHARINDEX no permite expresiones regulares. Podría quedar de la siguiente manera:
SELECT  Columna_C,
        cast(cast(Columna_C as bigint) as varchar) as Column_A,
        CASE
            WHEN charindex('445', Columna_C) > 0 THEN
                Cast(cast(substring(Columna_C, charindex('445', Columna_C)+3, len(Columna_C)) as bigint) as varchar)
            WHEN charindex('750', Columna_C) > 0 THEN
                Cast(cast(substring(Columna_C, charindex('750', Columna_C)+3, len(Columna_C)) as bigint) as varchar)
        END as Column_B
FROM    Tabla_C
Y en dado caso de que necesites agregar uno más solo yienes que poner otro WHEN... THEN para el nuevo valor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas