PDA

Ver la Versión Completa : where campo = '5***' los * pueden ser cualquier valor


cirsgo
20/06/11, 18:56:30
Hola a todos!

Tengo una subquery y dentro de la sentencia where debo poner que un campo en concreto sea 5**** o 6****, es decir cinco lo que sea o seis lo que sea...¿alguien puede decirme cómo puedo hacer esto en una select?

SELECT SINGLE * INTO L_WA_ITAB
FROM t77ed
WHERE awart ='5***' o '6***'???

He probado a creear una variable de tipo string y concatenar:
concatenate '5' '%' into variable. Y en vez de %, * pero nada.
Y también creando rangos...

Seguro que es una tontería pero...alguien puede decirme cómo hacerlo.

Muchas gracias!!

DCErick
20/06/11, 20:02:42
Hola a todos!

Tengo una subquery y dentro de la sentencia where debo poner que un campo en concreto sea 5**** o 6****, es decir cinco lo que sea o seis lo que sea...¿alguien puede decirme cómo puedo hacer esto en una select?

SELECT SINGLE * INTO L_WA_ITAB
FROM t77ed
WHERE awart ='5***' o '6***'???

He probado a creear una variable de tipo string y concatenar:
concatenate '5' '%' into variable. Y en vez de %, * pero nada.
Y también creando rangos...

Seguro que es una tontería pero...alguien puede decirme cómo hacerlo.

Muchas gracias!!

Usa like en lugar de =

where campo like ....

cirsgo
21/06/11, 06:25:06
Gracias,

concatenate '5' '%' into variable.
SELECT SINGLE * INTO L_WA_ITAB
FROM t77ed
WHERE awart LIKE variable.

Todo ok:)

K-MUS
23/06/11, 14:48:50
En verdad si vos sabes que son 4 caracteres deberías usar

LIKE '5___'.

el _ es un comodín pero determina una posición, por ende la búsqueda va a ser un poco más rápida, ya que descartas todos los valores mayores a 4 dígitos, en cambio si usas '5%' toma todo lo que empieza con 5.

jarabas
27/06/11, 10:20:45
Eso de los guiones bajos es la primera vez que lo veo, funciona? yo estoy probando y no me funciona.

SAludos

K-MUS
27/06/11, 13:23:01
Si, te paso el link a la SAP HELP
http://help.sap.com/SAPhelp_nw04/helpdata/en/fc/eb3a1f358411d1829f0000e829fbfe/content.htm

Comparing Strings

To find out whether the value of a column matches a pattern, use:

SELECT ... WHERE <s> [NOT ] LIKE <f> [ESCAPE <h>] ...

The condition is true if the value of the column <s> matches [does not match] the pattern in the data object <f>. You can only use this test for text fields. The data type of the column must be alphanumeric. <f> must have data type C.

You can use the following wildcard characters in <f>:

% for a sequence of any characters (including spaces).
_ for a single character.

For example, ABC_EFG% matches the strings ABCxEFGxyz and ABCxEFG, but not ABCEFGxyz. If you want to use the two wildcard characters explicitly in the comparison, use the ESCAPE option. ESCAPE <h> specifies an escape symbol <h>. If preceded by <h>, the wildcards and the escape symbol itself lose their usual function within the pattern <f>. The use of _ and % corresponds to Standard SQL usage. Logical expressions elsewhere in ABAP use other wildcard characters (+ and *).

You cannot use LIKE in the ON condition of the FROM clause.

jarabas
27/06/11, 13:55:51
Ok, gracias pero haciendo dos select a la LFA1, una con el % y otra con _ para que salgan cosas distintas, me devuelve los mismos mismos registros.

Que puedo estar haciendo mal? por que esto me parece bastante interesante y util a la hora de optimizar consultas.

Gracias de antemano.

Saludos.

Edito:
tienes toda la razón del mundo, lo estaba probando mal estaba poniendo algo que me devolvia lo misma.

gracias nuevamente.