<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - like w funkcji]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=536</link>
		<description><![CDATA[Najświeższe odpowiedzi w like w funkcji.]]></description>
		<lastBuildDate>Sun, 30 Jan 2011 10:57:35 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: like w funkcji]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2378#p2378</link>
			<description><![CDATA[:)
A w postgresie łączysz
[code]
'..'||zmienna||' ..'
[/code]
ale musisz używać apostrofów a nie cudzysłowia.]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Sun, 30 Jan 2011 10:57:35 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2378#p2378</guid>
		</item>
		<item>
			<title><![CDATA[Odp: like w funkcji]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2377#p2377</link>
			<description><![CDATA[No nie zaskoczyłem :-)
W Accessie łącze   .." & zmienna & " ....

Dzięki za pomoc i wyrozumiałość]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Sat, 29 Jan 2011 23:35:11 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2377#p2377</guid>
		</item>
		<item>
			<title><![CDATA[Odp: like w funkcji]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2376#p2376</link>
			<description><![CDATA[Nie rozumiem pytania?
Normalnie, znaczy w SQL, jest
[code]
SELECT ....FROM ... WHERE upper(zamiawiajacy) like upper('%kowalski%');
[/code]
a w funkcji musisz dobrac nazwę klienta bo przeciez nie wiesz czy to będzie kowalski więc musisz skleić stringa do wyszukania
[code]
upper(zamiawiajacy) like upper('%'||zm_klienta||'%');
[/code]
|| to operator sklejania (konkatenacji)
Ogólnie byłeś blisko rozwiązania tylko zamiast ' ' użyłeś " " a cudzysłów ma trochę inne znaczenie w postgresie (i w części innych baz tez)]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Sat, 29 Jan 2011 20:26:02 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2376#p2376</guid>
		</item>
		<item>
			<title><![CDATA[Odp: like w funkcji]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2375#p2375</link>
			<description><![CDATA[Dzięki, działa
A dlaczego w funkcji tak jest ?]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Sat, 29 Jan 2011 19:52:01 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2375#p2375</guid>
		</item>
		<item>
			<title><![CDATA[Odp: like w funkcji]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2374#p2374</link>
			<description><![CDATA[Zrób tak
[code]
for dane in SELECT * FROM tab_klienci where upper(zamawiajacy) like upper('%'||zm_klient||'%')
[/code]]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Sat, 29 Jan 2011 18:43:40 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2374#p2374</guid>
		</item>
		<item>
			<title><![CDATA[like w funkcji]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2373#p2373</link>
			<description><![CDATA[Witam
Mam taką funkcje, która nie wiem dlaczego nic nie zwraca, wszystko przez warunek where, bez warunku działa, a select bez funkcji z tym warunkiem działa.

funkcję wywołuję tak select * from fpobierz_szukaj_klienta('a',true)  -- drugi parametr teraz nie ma znaczenia

CREATE OR REPLACE FUNCTION "fpobierz_szukaj_klienta" (
  zm_klient VARCHAR, zm_aktywny boolean)
RETURNS SETOF tab_klienci AS
$body$
   declare
      dane tab_klienci%ROWTYPE;
  begin
      for dane in SELECT * FROM tab_klienci where upper(zamawiajacy) like upper('% zm_klient %')
      loop
          return next dane;
     end loop;
  end;
$body$
LANGUAGE 'plpgsql'
SECURITY DEFINER

znalazłem w sieci coś takiego like upper(''%'' || zm_klient || ''%''), ale wywołanie funkcji wywala błedy
ERROR:  operator is not unique: unknown % unknown
LINE 1: ...tab_klienci where upper(zamawiajacy) like upper(''%'' || zm_...
                                                             ^
HINT:  Could not choose a best candidate operator. You might need to add explicit type casts.
QUERY:  SELECT * FROM tab_klienci where upper(zamawiajacy) like upper(''%'' || zm_klient || ''%'')
CONTEXT:  PL/pgSQL function "fpobierz_szukaj_klienta" line 4 at FOR over SELECT r


a taki warunek like upper(''%zm_klient%'')
ERROR:  operator does not exist: unknown % character varying
LINE 1: ...tab_klienci where upper(zamawiajacy) like upper(''%zm_klient...
                                                             ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.
QUERY:  SELECT * FROM tab_klienci where upper(zamawiajacy) like upper(''%zm_klient%'')
CONTEXT:  PL/pgSQL function "fpobierz_szukaj_klienta" line 4 at FOR over SELECT rows

Nie mam pojęcia dlaczego to nie działa
Dzięki z góry za pomoc
AdamP.]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Sat, 29 Jan 2011 18:17:11 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2373#p2373</guid>
		</item>
	</channel>
</rss>
