En primer lugar, usar un comodin de ambosl lados es una muy mala idea. Eso le indica al DBMS que busque lo que comience con cualquier cosa y lo que termine con cualquiier cosa, y eso es algo que sólo se puede resolver
leyendo toda la tabla.
Este tipo de condiciones se debe evitar porque no sólo genra un full scan (es un espanto) sino que además desactiva todo índice que exista sobre ese campo.
Más allá de eso, usar "%%" simplemente es como si no existiese esa condición, porque le estás diciendo "devolveme todo, haya lo que haya".
¿Para qué lo pondrías entonces?
En tu consulta tenemos:
Código SQL:
Ver originalSELECT IdPlayer, Player, Name, LastName, Email, Password, IdBook
FROM PLAYER
WHERE
Player LIKE '%%'
AND Name LIKE '%test%'
AND LastName LIKE '%%'
AND Email LIKE '%%'
AND Password LIKE '%%'
AND Phone LIKE '%%'
AND Zip LIKE '%%'
AND STATUS = 'D
Si eliminamos lo superfluo, quedaría:
Código SQL:
Ver originalSELECT IdPlayer, Player, Name, LastName, Email, Password, IdBook
FROM PLAYER
WHERE
AND Name LIKE '%test%'
AND STATUS = 'D'
¿Por qué te edvuelve entonces cantidades distintas?
Bueno, voy a hacer una suposición, en base a mi experiencia en diferentes DBMS: El "%%" implica que debe haber ALGO en ese campo, aunque eso sea un espacio nulo o vacío, pero no debe ser NULL, ya que NULL no suele ser un dato, sino un estado.
Es probable que la consulta correcta fuese:
Código SQL:
Ver originalSELECT IdPlayer, Player, Name, LastName, Email, Password, IdBook
FROM PLAYER
WHERE
Player IS NOT NULL
AND Name LIKE '%test%'
AND LastName IS NOT NULL
AND Email IS NOT NULL
AND Password IS NOT NULL
AND Phone IS NOT NULL
AND Zip IS NOT NULL
AND STATUS = 'D
Prueba y me dices.