Cita: Ah, como detalle, probe directamente la sentencia SQL en el Postgres y tampoco me funciono, pero la lleve a MySQL y si me funciono. Me pueden ayudar a descifrar el problema.
El hecho de que en uno funcione y en el otro no puede estar causado por la definición de la tabla en cada uno. No te olvides que estás hablando de DBMS
completamente distintos. No puedes pretender que tengan exactamente la misma estructura ni restricciones.
De hecho, si las columnas de MySQL las hubieses definido como de collation "utf8_bin", por ejemplo, tampoco te funcionaría.
En tu caso, si quieres que se omita la distinción de MAYUSCULAS/minusculas, lo que debes hacer es lo que se suele hacer: igualarlas...
En MySQL, Oracle y otros la solución es simplemente:
Código PHP:
$criterio = "";
$txt_criterio = "";
if (isset($_GET["criterio"])!=""){
$txt_criterio = $_GET["criterio"];
$criterio = " WHERE UPPER(nombre_personas) LIKE UPPER('%".$txt_criterio."%') ";
}
$sql="SELECT * FROM tb_personas ".$criterio;
$res=pg_query($sql);
$numeroRegistros=pg_num_rows($res);
if($numeroRegistros<=0)
{
echo "No se encontraron resultados.";
}else{
echo "Se encontraron los siguientes resultados: <br/>";
echo $registro["nombre_completo"] ."<br/>";
}
Nota que pongo cada componente de cadena en el WHERE con la funcion UPPER() de MySQL, la cual existe también en otros DBMS.
Creo que también existe en PosgreSQL...