use Function;
use crateExpression;
/// Returns the first non-null expression
/// Returns the first non-null argument
///
/// ```rust
/// # use sqlint::{ast::*, visitor::{Visitor, Sqlite}};
/// # fn main() -> Result<(), sqlint::error::Error> {
/// let exprs: Vec<Expression> = vec![
/// Column::from(("users", "company")).into(),
/// Value::text("Individual").into(),
/// ];
/// let query = Select::from_table("users").value(coalesce(exprs));
/// let (sql, params) = Sqlite::build(query)?;
/// assert_eq!("SELECT COALESCE(`users`.`company`, ?) FROM `users`", sql);
/// assert_eq!(vec![Value::text("Individual")], params);
/// # Ok(())
/// # }
/// ```