Method: Spider::Model::Storage::Db::DbStorage#sql_condition_value
- Defined in:
- lib/spiderfw/model/storage/db/db_storage.rb
#sql_condition_value(key, comp, value, bound_vars = true) ⇒ Object
Returns the SQL for a condition comparison.
376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 |
# File 'lib/spiderfw/model/storage/db/db_storage.rb', line 376 def sql_condition_value(key, comp, value, bound_vars=true) key = key.expression if key.is_a?(FieldExpression) if (comp.to_s.downcase == 'ilike') comp = 'like' key = "UPPER(#{key})" end if (comp.to_s.downcase == 'nlike') comp = 'not like' key = "UPPER(#{key})" end if (value.nil?) comp = comp == '=' ? "IS" : "IS NOT" sql = "#{key} #{comp} NULL" else if comp.to_s.downcase == 'between' if bound_vars val0 = val1 = '?' else val0, val1 = value end sql = "#{key} #{comp} #{val0} AND #{val1}" else val = bound_vars ? '?' : value sql = "#{key} #{comp} #{val}" if comp == '<>' sql = "(#{sql} or #{key} IS NULL)" end end end return sql end |