none
Consulta utilizando CONCAT y filtrando con LIKE % % RRS feed

  • Pregunta

  • Hola

    Solicito amablemente su colaboración con la siguiente duda:

    Se tiene la siguiente tabla:

    CREATE TABLE EJEMPLO (
    ID INT NOT NULL IDENTITY, 
    DATO1 VARCHAR(50),
    DATO2 VARCHAR(50),
    PRIMARY KEY (ID)
    );

    Se insertan los siguientes datos:

    INSERT INTO EJEMPLO (DATO1, DATO2) VALUES ('AAA', 'BBB');
    INSERT INTO EJEMPLO (DATO1, DATO2) VALUES ('CCC', 'DDD');
    INSERT INTO EJEMPLO (DATO1, DATO2) VALUES ('EEE', 'FFF');

    Esta es la manera de concatenar los datos:

    SELECT CONCAT(ID,' ',DATO1,' ',DATO2) AS DESCRIPCION FROM EJEMPLO 

    La pregunta es:

    Como poder obtener el registro solicitado enviando como parámetro alguno de los datos?

    Es decir, que cuando en el like este alguno de los datos del registro traiga concatenada la (DESCRIPCION).

    Por ejemplo: Con el parámetro 'CCC' el resultado sea: 2 CCC DDD

    Lo estaba intentando de la siguiente manera pero no funciona:

    SELECT CONCAT(ID,' ',DATO1,' ',DATO2) AS DESCRIPCION FROM EJEMPLO WHERE DESCRIPCION LIKE '%CCC%'
    Muchas gracias.


    Respuesta de foro Microsoft

    miércoles, 16 de septiembre de 2020 2:31

Respuestas

  • Hola yulfredy:

    SELECT CONCAT(ID,' ',DATO1,' ',DATO2) AS DESCRIPCION FROM EJEMPLO 
    where  CONCAT(ID,' ',DATO1,' ',DATO2) like '%CCC%'

    Puedes aplicar la función concat en el where para comparar con lo buscado.

    O también

    SELECT * FROM (
    	SELECT CONCAT(ID,' ',DATO1,' ',DATO2) AS DESCRIPCION FROM EJEMPLO 
    ) AS D
    WHERE D.DESCRIPCION LIKE '%CCC%'

    Tablas derivadas

    https://javifer2.wordpress.com/2019/11/06/tabla-derivada/

    El problema de que no te funcione lo que has intentado, es porque la secuencia de ejecución de las consultas por parte del motor a groso modo es la siguiente:

    1. FROM
    2. WHERE
    3. GROUP BY
    4. CUBE | ROLLUP
    5. HAVING
    6. SELECT
    7. ORDER BY

    Entonces en el where el motor no sabe lo que es Descripción aún.

    • Marcado como respuesta yulfredy miércoles, 16 de septiembre de 2020 4:24
    miércoles, 16 de septiembre de 2020 3:44

Todas las respuestas

  • Hola yulfredy:

    SELECT CONCAT(ID,' ',DATO1,' ',DATO2) AS DESCRIPCION FROM EJEMPLO 
    where  CONCAT(ID,' ',DATO1,' ',DATO2) like '%CCC%'

    Puedes aplicar la función concat en el where para comparar con lo buscado.

    O también

    SELECT * FROM (
    	SELECT CONCAT(ID,' ',DATO1,' ',DATO2) AS DESCRIPCION FROM EJEMPLO 
    ) AS D
    WHERE D.DESCRIPCION LIKE '%CCC%'

    Tablas derivadas

    https://javifer2.wordpress.com/2019/11/06/tabla-derivada/

    El problema de que no te funcione lo que has intentado, es porque la secuencia de ejecución de las consultas por parte del motor a groso modo es la siguiente:

    1. FROM
    2. WHERE
    3. GROUP BY
    4. CUBE | ROLLUP
    5. HAVING
    6. SELECT
    7. ORDER BY

    Entonces en el where el motor no sabe lo que es Descripción aún.

    • Marcado como respuesta yulfredy miércoles, 16 de septiembre de 2020 4:24
    miércoles, 16 de septiembre de 2020 3:44
  • Muchas Gracias!!!



    Respuesta de foro Microsoft


    • Editado yulfredy miércoles, 16 de septiembre de 2020 4:26
    miércoles, 16 de septiembre de 2020 4:26