Posted on: April 16, 2021 11:14 AM
Posted by: Renato
Views: 2444
Quando usamos a função FIND_IN_SET () na cláusula WHERE, ela pesquisa a string de pesquisa dentro da string dada conforme especificado no argumento e recupera todas as colunas das linhas em questão.
Neste exemplo, estamos obtendo as colunas da tabela ‘Aluno’ onde as linhas têm o valor de nome como ‘Renato’. Aqui, a função FIND_IN_SET () irá pesquisar a string de pesquisa ‘Renato’ a partir dos valores da coluna ‘Nome’.
mysql> Select Id, Name, Address, Subject from student WHERE FIND_IN_SET('Renato',Name);
+------+--------+---------+-----------+
| Id | Name | Address | Subject |
+------+--------+---------+-----------+
| 1 | Renato | Goiania | Computers |
| 20 | Renato | Udia | Computers |
+------+--------+---------+-----------+
Outro Exemplo sql:
SELECT * FROM table_b
WHERE FIND_IN_SET ('22', outro_ID)
AND valor = 200;
#PHP
$sql = "SELECT * FROM table_b WHERE FIND_IN_SET ({$user->outId}, outro_ID) AND valor = {$user->chainValor} ";
MYSQL FIND_IN_SET COM MULTIPLE SEARCH STRING
Na função mysql find_in_set possível verificar apenas strings como esta:
find_in_set('a','a,b,c,d')
Mas não é possível Pesquisar assim:
find_in_set('a,b,c,d','a,b,c,d')
se quisermos pesquisa múltipla, o texto só é possível assim:
find_in_set('a', 'a,b,c,d') OR find_in_set('b', 'a,b,c,d') OR find_in_set('c', 'a,b,c,d')
No formato acima é muito difícil de implementar em todos os lugares, mas usaremos o seguinte truque fornecido facilmente para atingir seu objetivo
A consulta a seguir para usar e obter o resultado facilmente sem a função find_in_set
SELECT * from table_name WHERE CONCAT(",", `id`, ",") REGEXP ",(1|2|3),"
PHP COM Mysql Sem Find_in_set
Por exemplo, temos o valor do array, mas queremos resultados com base no valor do array que implementa este código e obtém o resultado
Valor de suposição:
a[]=array(10,12,13,14,15);
$test="SELECT * from table_name WHERE";
$tot=count($a);
$counter=1;
foreach($a as $val)
{
echo $counter;
$test .= " id=$val";
if($counter !=$tot)
{
$test .=" OR ";
}
$counter++;
}
echo $test;
mysql_query($test); ?>
Finalmente, obtemos uma saída como esta
SELECT * from table_name WHERE id= 10 OR id = 12 OR id= 13 ..etc;
Donate to Site
Renato
Developer