none
Ayuda con Procedimiento Almacenado de Búsqueda RRS feed

  • Pregunta

  • Hola, buenas tardes! Estoy trabajando con SQL Server y procedimientos almacenados en una programación que es como agenda telefónica, pero ya me atoré en una sintaxis de SQL Server...

    Tengo una variable de entrada llamada "buscado", y quiero que en la aplicación al momento de ir escribiendo cada letra en el campo de búsqueda vaya filtrando por los que llevan esas letras, ejemplo, si escribió la "S", que aparezcan todos los que tienen la S, si la segunda letra es "A" que aparezcan todos los que llevan "SA", etc.... 

    El detalle es que solo se me actualiza hasta que escribe toda la palabra y es igual, el código es el siguiente:

    go

    create procedure buscar
    ( @buscado as varchar(40))
    select * from amigo where nombres like buscado;
    go

    Me podrían ayudar? Muchas gracias de Antemano.



    • Editado Yo soy Sam lunes, 23 de enero de 2017 0:28
    lunes, 23 de enero de 2017 0:27

Respuestas

  • Yo soy Sam,

    Debes utilizar el comodín '%' para indicar que posterior al valor que contiene el parámetro '@buscado' puede haber una cadena de cero o más caracteres.

    CREATE PROCEDURE dbo.buscar ( 
        @buscado as varchar(40))
    AS
    BEGIN
        SELECT * FROM amigo WHERE nombres LIKE @buscado + '%';
    END
    GO


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    lunes, 23 de enero de 2017 6:04
  • La respuesta es agregar el comodin % al final de la cadena de busqueda dentro del procedimiento, pero creo que ejecutar el procedimiento por cada letra que se escriba en la aplicacion cliente pudiera ser demasiada carga.

    Si la cantidad de registros original no es mucho, entonces trae todo hacia el lado del cliente y filtralo ahi. Otra opcion es buscar por cadenas como hasta ahora lo haces, solo que adicionando el comodin en el procedimiento.

    Para busquedas de cadenas mas complejas podrias usar la facilidad de busqueda de texto (full-text search).

    Por ultimo, pero no menos importante, es buena practica enumerar las columnas de interes en la clausula SELECT. Quien lea el sp tendra mejor idea, no habra sorpresas cuando se adicionen otras columnas a la tabla, etc.

     

    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas


    lunes, 23 de enero de 2017 13:28

Todas las respuestas

  • Yo soy Sam,

    Debes utilizar el comodín '%' para indicar que posterior al valor que contiene el parámetro '@buscado' puede haber una cadena de cero o más caracteres.

    CREATE PROCEDURE dbo.buscar ( 
        @buscado as varchar(40))
    AS
    BEGIN
        SELECT * FROM amigo WHERE nombres LIKE @buscado + '%';
    END
    GO


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    lunes, 23 de enero de 2017 6:04
  • La respuesta es agregar el comodin % al final de la cadena de busqueda dentro del procedimiento, pero creo que ejecutar el procedimiento por cada letra que se escriba en la aplicacion cliente pudiera ser demasiada carga.

    Si la cantidad de registros original no es mucho, entonces trae todo hacia el lado del cliente y filtralo ahi. Otra opcion es buscar por cadenas como hasta ahora lo haces, solo que adicionando el comodin en el procedimiento.

    Para busquedas de cadenas mas complejas podrias usar la facilidad de busqueda de texto (full-text search).

    Por ultimo, pero no menos importante, es buena practica enumerar las columnas de interes en la clausula SELECT. Quien lea el sp tendra mejor idea, no habra sorpresas cuando se adicionen otras columnas a la tabla, etc.

     

    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas


    lunes, 23 de enero de 2017 13:28