sql >> Databasteknik >  >> RDS >> Sqlserver

Databasoberoende SQL String Sammansättning i Rails

Jag hade samma problem och kom aldrig på något som var inbyggt i Rails. Så jag skrev den här lilla metoden.

# Symbols should be used for field names, everything else will be quoted as a string
def db_concat(*args)

  adapter = configurations[RAILS_ENV]['adapter'].to_sym
  args.map!{ |arg| arg.class==Symbol ? arg.to_s : "'#{arg}'" }

  case adapter
    when :mysql
      "CONCAT(#{args.join(',')})"
    when :sqlserver
      args.join('+')
    else
      args.join('||')
  end

end

Jag tycker att någon verkligen borde skriva någon sorts SQL-hjälparplugin som automatiskt kan formatera enkla SQL-uttryck baserat på rätt funktioner eller operatorer för den aktuella adaptern. Jag kanske skriver en själv.



  1. med villkorlig logik:kontrollera om posten finns; Om den gör det, uppdatera den, om inte, skapa den

  2. Liveuppdatering av MySQL-data

  3. Ett användningsfall för sp_prepare / sp_prepexec

  4. Beroendespårningsfunktion