Comodines en el WHEN de un CASE.

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • stompy
    Junior Member
    • jun
    • 13

    #1

    Comodines en el WHEN de un CASE.

    Hola me gustaría hacer algo tipo:

    CASE var.
    WHEN LIKE '*a' ...........
    WHEN LIKE '*b' ...........
    ENDCASE.

    pero esto no funciona.

    Hay alguna manera de hacer algo así?
  • Khira46
    Junior Member
    • ene
    • 16

    #2
    Buenas,

    Entiendo que lo que quieres hacer es que si tu variable acaba en 'a' se haga tal cosa y si acaba en 'b' haga otra diferente.
    Si es así prueba con el operador Contains Pattern:

    IF ( var CP '*a' ).
    ....
    ELSE.
    IF ( var CP '*b' ).
    .....
    ENDIF.
    ENDIF.

    No se si funcionará con un CASE, ya que creo que no se pueden utilizar expresiones lógicas con él, aunque de esto último no estoy muy segura.

    Espero haber podido ayudarte.

    Un saludo

    Khirina

    Comentario

    • pafú
      Member
      • sep
      • 49

      #3
      Yo te diría lo mismo que khira46 pero en lugar del * pondría el %.

      Espero que te valga.

      Comentario

      • stompy
        Junior Member
        • jun
        • 13

        #4
        Gracias a ambos, era CP.
        Efectivamente con CASE no funciona. he tenido q meter un montón de IF anidados, espero q nadie vea mi código .

        Otra duda q m ha venido con la respuesta de pafú es el tema de los comodines.

        Yo uso * para una cadena de caracteres y + para un solo caracter->en la mayoría de ocasiones

        En cambio uso % y _ en los SELECT

        Son iguales?

        Hay más comodines? (he visto algo de #)
        Editado por última vez por stompy; 19/11/2007, 12:55:11.

        Comentario

        • Khira46
          Junior Member
          • ene
          • 16

          #5
          Hola stompy,

          El símbolo # se emplea cuando buscas un caracter o una cadena de caracteres y quieres encontrarla tal cual la estás escribiendo, de forma literal, por ejemplo respetando las mayúsculas y las minúsculas, o para encontrar símbolos reservados por ejemplo #, *, %, _, etc. Por ejemplo:

          *Nos creamos un parametro para introducir una cadena de caracteres
          PARAMETERS: var(30).

          WRITE:/2 var.
          IF ( var CP '#E#S*' ). "Buscamos "ES"
          WRITE:/ sy-fdpos.
          ENDIF.
          IF ( var CP '*##*' ). "Buscamos el propio caracter
          WRITE:/ sy-fdpos.
          ENDIF.

          En cuanto a la diferencia entre %, *, etc. Yo utilizo el %, en los select cuando tengo datos que empiezan por un patrón determinado, %Hola, me devolvería en la select todos aquellos datos que comiencen con Hola, y el * lo utilizo con los operadores contains (only, pattenr, etc)
          La verdad, es que no se si se pueden emplear de otra forma.

          Un saludo

          Khirina

          Comentario

          Trabajando...