Search Postgresql Archives

overloading LIKE operator to handle integer + text

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.


-- 
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux