Method: ArelExtensions::Visitors::MSSQL#visit_ArelExtensions_Nodes_Length

Defined in:
lib/arel_extensions/visitors/mssql.rb

#visit_ArelExtensions_Nodes_Length(o, collector) ⇒ Object



277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
# File 'lib/arel_extensions/visitors/mssql.rb', line 277

def visit_ArelExtensions_Nodes_Length o, collector
  if o.bytewise
    collector << '(DATALENGTH('
    collector = visit o.expr, collector
    collector << ') / ISNULL(NULLIF(DATALENGTH(LEFT(COALESCE('
    collector = visit o.expr, collector
    collector << ", '#' ), 1 )), 0), 1))"
    collector
  else
    collector << 'LEN('
    collector = visit o.expr, collector
    collector << ')'
    collector
  end
end