<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - like w funkcji]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=536&amp;type=atom"/>
	<updated>2011-01-30T10:57:35Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=536</id>
		<entry>
			<title type="html"><![CDATA[Odp: like w funkcji]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2378#p2378"/>
			<content type="html"><![CDATA[:)
A w postgresie łączysz
[code]
'..'||zmienna||' ..'
[/code]
ale musisz używać apostrofów a nie cudzysłowia.]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2011-01-30T10:57:35Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2378#p2378</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: like w funkcji]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2377#p2377"/>
			<content type="html"><![CDATA[No nie zaskoczyłem :-)
W Accessie łącze   .." & zmienna & " ....

Dzięki za pomoc i wyrozumiałość]]></content>
			<author>
				<name><![CDATA[adamleon]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=873</uri>
			</author>
			<updated>2011-01-29T23:35:11Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2377#p2377</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: like w funkcji]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2376#p2376"/>
			<content type="html"><![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)]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2011-01-29T20:26:02Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2376#p2376</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: like w funkcji]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2375#p2375"/>
			<content type="html"><![CDATA[Dzięki, działa
A dlaczego w funkcji tak jest ?]]></content>
			<author>
				<name><![CDATA[adamleon]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=873</uri>
			</author>
			<updated>2011-01-29T19:52:01Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2375#p2375</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: like w funkcji]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2374#p2374"/>
			<content type="html"><![CDATA[Zrób tak
[code]
for dane in SELECT * FROM tab_klienci where upper(zamawiajacy) like upper('%'||zm_klient||'%')
[/code]]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2011-01-29T18:43:40Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2374#p2374</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[like w funkcji]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2373#p2373"/>
			<content type="html"><![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.]]></content>
			<author>
				<name><![CDATA[adamleon]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=873</uri>
			</author>
			<updated>2011-01-29T18:17:11Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2373#p2373</id>
		</entry>
</feed>
