sql >> Database >  >> RDS >> Mysql

genereer waar-clausule in bash met behulp van variabelen

Het is efficiënter om kleine wijzigingen in de query aan te brengen, waardoor het eenvoudiger wordt om dynamisch (equivalent) SQL te genereren.

Het gebruikt de operator "tussen" om lijsten met variabele lengte voor de 'in (...)'-voorwaarden te vermijden.

Opmerking opmerking over 1=1, het wordt bewaard volgens de vraag, maar moet worden herzien, omdat het altijd aan de voorwaarde voldoet.

min_date='2020-06-06'
max_date='2020-06-08'
max_seq_min_date=1
max_seq_max_date=3

echo "
WHERE 1 = 1 or case
    when batch_date = '$min_date' then seq_num between 1 and $max_seq_min_date
    when batch_date = '$max_date' then seq_num between 1 and $max_seq_max_date
    when batch_date between '$min_date' and '$max_date' then seq_num between 1 and 4
    else false
    end
" 

Ik heb GEEN mysql, maar het bovenstaande werkt voor Postgresql.



  1. MySQL-syntaxisfoutbericht Operand moet 1 kolom(men) bevatten

  2. Inleiding tot HDFS | Wat is HDFS en hoe werkt het?

  3. C# MySql GEBRUIKER MAKEN

  4. Hoe dynamische SQL opschonen (voorkomen van SQL-injectie) in SQL Server?