Hi all,
I'd like to be able to operate LIKE using as arguments an integer and
a text value.
In postgresql 9.0 the following raises an error:
# SELECT 123 LIKE '123';
ERROR: operator does not exist: integer ~~ unknown
LINE 1: select 123 like '123'; ^
HINT: No operator matches the given name and argument type(s). You
might need to add explicit type casts.
This can be easily solved as the HINT suggests as:
# SELECT 123::text LIKE '123';
But I cannot touch the SQL queries generated by the application, which
generates queries like:
SELECT * from tabname WHERE "id" LIKE '%34%';
Thus I thought I might overload the LIKE operator to be able to handle
the case where args are integer and text.
So I create a function:
CREATE OR REPLACE FUNCTION public.my_like(leftop integer, rightop text)
RETURNS boolean
LANGUAGE sql
AS $function$
SELECT $1::text LIKE $2;
$function$
But then I can't create the operator:
# CREATE OPERATOR "LIKE" (LEFTARG=integer, RIGHTARG=text, PROCEDURE=my_like);
ERROR: syntax error at or near "("
LINE 1: CREATE OPERATOR "LIKE" (LEFTARG=integer, RIGHTARG=text, PROC...
Any ideas what I'm missing? The doc's examples have a "(".
TIA,
Thalis K.