def concat_ws(self, sep, *args): return Concat(self._expr, *args).ws(sep)
def concat(self, *args): return Concat(self._expr, *args)
def riendswith(self, other): pattern = EscapeForLike(self._expr) return ILike(other, Concat(Value('%'), pattern), escape=pattern.escape)
def ricontains(self, other): pattern = EscapeForLike(self._expr) return ILike(other, Concat(Value('%'), pattern, Value('%')), escape=pattern.escape)
def ristartswith(self, other): pattern = EscapeForLike(self._expr) return ILike(other, Concat(pattern, Value('%')), escape=pattern.escape)
def contains(self, other): # TODO: ambiguous with "@>" operator of postgresql. pattern = EscapeForLike(other) return Like(self._expr, Concat(Value('%'), pattern, Value('%')), escape=pattern.escape)