Como hacer un select, con multiples condiciones

      • 663
      • mensajes
      • miembro desde
      • 16/01/05
    #1 Como hacer un select, con multiples condiciones

    Bueno la cosa es asi, quiero hacer un select, donde el campo es textual
    y lo que quiero es meter si se puede como uno hace en muchos lenguajes de programacion, algo que me devuelva todos los registros donde hay caracteres que no son los que van desde la 'a' a la 'z' y la 'A' a la 'Z'
    o sea q me duvuelva todo lo que tenga empezando en el medio o al final una coma, un punto, un signo de admiracion, o todos los chirimbolos de ascii.
    Se puede hacer eso, o voy a tener que poner a mano, todo lo quiero que salga?
    alejandro

  1. ¿Este tema te pareció interesante? Compártelo!

    ¿No es lo que buscabas? Intenta buscar un tema similar

    3 comentarios / 71580 Visitas

      • 18
      • mensajes
      • miembro desde
      • 12/08/05
    27/12/2005
    #2 Re: Como hacer un select, con multiples condiciones

    no seria eso

    select () count (*) from TABLE where status = (letras) ¿

      • 10,221
      • mensajes
      • miembro desde
      • 07/06/04
    27/12/2005
    #3 Re: Como hacer un select, con multiples condiciones

    podrías probar esto:

    SELECT *
    FROM tabla
    WHERE campo_en_cuestion LIKE '%[0-9,;:.-_¿?·$%]%"

    Fijate que adentro de los [] sin espacios está todo lo que quiero que tome... x ej, el rango de numeros, y los "chirimbolos" que quiero buscar... Lamentablemente es asi porque si ponés que busque caracteres "no textuales" ( que seria %[a-zA-Z]%), ya que lo probé usando like, not like y negando lo que está entre corchetes [^a-zA-Z].

    Ah, por las dudas... las pruebas fueron con SQL Server 2000.


    El doc

      • 182
      • mensajes
      • miembro desde
      • 12/02/04
    21/03/2006
    #4 Re: Como hacer un select, con multiples condiciones

    Como no especificás el lenguaje que usas para comunicarte con el motor, te brindo una alternativa con SQL*Plus (Oracle)

    1º) Lo primero que yo haria es crear una tabla con los registros que no te interesan (nota: la funcion upper te permite convertir todas las letras a mayúsculas)

    CREATE TABLE NOMBRE_TEMPORAL AS
    SELECT *
    FROM
    TU TABLA
    WHERE
    UPPER(CAMPO_EN_CUESTION)) LIKE '%A%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%B%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%C%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%D%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%E%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%F%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%G%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%H%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%I%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%J%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%K%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%L%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%M%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%N%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%Ñ%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%O%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%P%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%Q%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%R%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%S%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%T%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%U%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%V%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%W%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%X%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%Y%'
    OR (UPPER(CAMPO_EN_CUESTION)) LIKE '%Z%';

    2º) El segundo paso es indexar (el indice unico es importante para que nuestro tercer paso funcione) Nota: al campo que indexo en mi ejemplo lo voy a llamar num_cliente. Ojo! es requisito del indice unico que en el campo no haya duplicados

    CREATE UNIQUE INDEX NOMBRE_TEMPORAL ON NOMBRE_TEMPORAL(NUM_CLIENTE)

    3º) Ahora si armo el SELECT con los registros que me interesan

    SELECT
    * FROM TU TABLA A
    WHERE NOT EXISTS (SELECT 'X'
    FROM
    NOMBRE_TEMPORAL B WHERE A.NUM_CLIENTE = B.NUM_CLIENTE)

    Espero que te sirva y contá como te fue

    Salute!

IR ARRIBA