Tengo aquí una tabla de muestra con tres campos.SELECCIONAR instrucción con substr en WHERE Cláusula
TableA
FieldA FieldB FieldC
======================================
123XYZ456 XYZ John
124NNN333 NNN Jenny
232XPT124 XPT Jade
456XXX345 XXX James
FieldA
tiene un FixedLength de 9. No diseñé esta mesa y algunas aplicaciones ya están utilizando.
Quiero seleccionar FieldB
y FieldC
con condiciones contra FieldA
.
Utilizando esta sentencia SQL:
SELECT FieldB,
FieldC
FROM TableA
WHERE FieldA LIKE Concat(@paramA, '%', @paramB)
no puede lograr el resultado deseado. Cuando trato de buscar con valor PARAMA de 12
y el valor de paramB ''
, consigo los resultados 2
:
FieldA FieldB FieldC
======================================
123XXX456 XXX John
124XXX333 XXX Jenny
porque, obviamente, de que coincide con 12%
y eso no es lo que quiero. Quiero que los parámetros coincidan con el índice correcto de la cadena.
Si busco paramA = '12'
y paramB = ''
entonces no debería tener ningún resultado. Para obtener los campos (FieldB
, FieldC
), necesito los valores correctos de paramA = '123'
y paramB = '456'
, por lo que devolverá XYZ
y John
. Si quiero devolver James
tengo que dar paramA = '456'
y paramB = '345'
¿Cómo podría crear correctamente una declaración de SQL para esto? ¿Alguna idea? Gracias.
ur básicamente concierne ABT 3 primeros y últimos 3 caracteres correctos? – Teja
¡Exactamente! Eso es lo que quería. –