<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - COPY AND NOT NULL]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=1913</link>
		<description><![CDATA[Najświeższe odpowiedzi w COPY AND NOT NULL.]]></description>
		<lastBuildDate>Mon, 09 Dec 2013 16:28:42 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: COPY AND NOT NULL]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=4877#p4877</link>
			<description><![CDATA[Serdecznie dziękuję. Wydaje mi się że dobrze mnie zrozumiałeś. Zaraz zacznę próbować. Odezwę się później.
Pozdrawiam
W.]]></description>
			<author><![CDATA[dummy@example.com (wiesiek)]]></author>
			<pubDate>Mon, 09 Dec 2013 16:28:42 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=4877#p4877</guid>
		</item>
		<item>
			<title><![CDATA[Odp: COPY AND NOT NULL]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=4876#p4876</link>
			<description><![CDATA[wykaz rekordów do skasowania:
select * from public.adresy1 a1 where exists (select 1 from public.adresy2 a2 where trim(upper(a1.emails))=trim(upper(a2.emails)));

Jak zweryfikujesz, że dokładnie o te rekordy Ci chodziło wykonaj 

Delete from public.adresy1 a1 where exists (select 1 from public.adresy2 a2 where trim(upper(a1.emails))=trim(upper(a2.emails)));

Skasujesz te rekordy z tabeli adresy1 które są też w adresy2 (Mam nadzieje że dobrze Cie zrozumiałem)]]></description>
			<author><![CDATA[dummy@example.com (c_michal)]]></author>
			<pubDate>Mon, 09 Dec 2013 12:51:22 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=4876#p4876</guid>
		</item>
		<item>
			<title><![CDATA[Odp: COPY AND NOT NULL]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=4873#p4873</link>
			<description><![CDATA[Mam inne pytanie.
Są dwie tabelki.
Jedna: public.adresy1  z kolumnami : address,  adresy1.emails	
Druga: public.adresy2 z jedną kolumną adresy2.emails

Jak to zrobić żeby pobrać po kolei adres z drugiej tabelki, czyli z public.adresy2, 
sprawdzić czy występuje w tabelce pierwszej, czyli w public.adresy1 w kolumnie adresy1.emails

jeżeli występuje to usunąć rekord w tabelce pierwszej public.adresy1 zawierający ten adres 
jeżeli nie występuje to nic nie robić 
i pobrać do sprawdzenia następny adres z public.adresy2

Będę bardzo wdzięczny za pomoc.
Pozdrawiam
W.]]></description>
			<author><![CDATA[dummy@example.com (wiesiek)]]></author>
			<pubDate>Mon, 09 Dec 2013 08:06:49 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=4873#p4873</guid>
		</item>
		<item>
			<title><![CDATA[Odp: COPY AND NOT NULL]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=4872#p4872</link>
			<description><![CDATA[[quote=c_michal]mail powinien zawierać znak "@" dlatego możesz napisać
Where coalesce(email,'') not like '%@%'
Zupełnie inną sprawą jest sprawdzenie poprawności adresu email - do tego służą wyrażenia regularne ale myślę, że to rozwiązanie zupełnie Ci wystarczy.

możesz też oczyścić swoją tabelę zmieniając tzw białe znaki na null np.

update tabela set email=null where coalesce(translate (email, chr(9)||chr(32)||chr(10)||chr(13),''),'')=''
Po takiej operacji twoje zapytanie gdzie napisałeś where email is not null powinno się wykonywać prawidłowo.[/quote]


Bardzo Ci dziekuje za odpowiedź. Jestem w tym temacie absolutnie zielony więc z góry przepraszam za (....) moich pytań.

Próbowałem na rózne sposoby ale żaden nie zakończył sie oczekiwanym sukcesem.

Polecenie
WHERE 
  coalesce (emails,'') not like '%@%' AND ((address) Like '%00-2%' Or (address) Like '%00-7%' )
  
  --zarówno bez spacji między apostrofami jak i ze spacją między apostrofami
  daje jako rezultat TYLKO te rekordy, które w polu emails mają TYLKO spację
  
Zrobiłem coś innego. 
Odkryłem, że wyrażenie
NOT LIKE ' '   --spacja między apostrofami
oznacza, że chodzi tylko o pole gdzie jest tylko spacja i nic więcej ani przed nią ani po niej. I to mi załatwiło sprawę.
Jeszcze raz dziękuję,]]></description>
			<author><![CDATA[dummy@example.com (wiesiek)]]></author>
			<pubDate>Sun, 08 Dec 2013 23:50:36 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=4872#p4872</guid>
		</item>
		<item>
			<title><![CDATA[Odp: COPY AND NOT NULL]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=4832#p4832</link>
			<description><![CDATA[mail powinien zawierać znak "@" dlatego możesz napisać
Where coalesce(email,'') not like '%@%'
Zupełnie inną sprawą jest sprawdzenie poprawności adresu email - do tego służą wyrażenia regularne ale myślę, że to rozwiązanie zupełnie Ci wystarczy.

możesz też oczyścić swoją tabelę zmieniając tzw białe znaki na null np.

update tabela set email=null where coalesce(translate (email, chr(9)||chr(32)||chr(10)||chr(13),''),'')=''
Po takiej operacji twoje zapytanie gdzie napisałeś where email is not null powinno się wykonywać prawidłowo.]]></description>
			<author><![CDATA[dummy@example.com (c_michal)]]></author>
			<pubDate>Mon, 25 Nov 2013 22:09:12 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=4832#p4832</guid>
		</item>
		<item>
			<title><![CDATA[Odp: COPY AND NOT NULL]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=4831#p4831</link>
			<description><![CDATA[[quote=wiesiek]

powoduje wyszukanie WSZYSTKICH rekordów spełniających warunek LIKE również tych, które pole emails mają "puste".

[/quote]

Sprawdziłem jeszcze raz pola emails zawierały spacje i stąd te problemy. 
wpisałem

 WHERE 
  emails NOT LIKE ' ' ;
i zrobiło sie OK, czyli zostały wybrane rekordy nie zawierajace  spacji w polu emails .


Ale chciałbym zmodyfikować pytanie. 
Jeżeli pole emails zawiera coś takiego 'a1@wp.pl, a2@wp.pl' tzn. miedzy jednym adresem a drugim jest przecinek i spacja to jak sformułować warunek aby taki rekord również został wybierany mimo iż zawiera spację?]]></description>
			<author><![CDATA[dummy@example.com (wiesiek)]]></author>
			<pubDate>Mon, 25 Nov 2013 21:08:53 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=4831#p4831</guid>
		</item>
		<item>
			<title><![CDATA[COPY AND NOT NULL]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=4830#p4830</link>
			<description><![CDATA[W bazie sa kolumny addresses, emails
Chciałbym wybrać te rekordy, które zawierają kod pocztowy spełniajacy warunek LIKE i które jednocześnie zawieraja jakikolwiek zapis w polu emails (tzn nie sa puste)

Taki zapis
SELECT 
  adresy.address, 
  adresy.emails
FROM 
  public.adresy
WHERE 
  (((address) Like '%00-2%' Or (address) Like '%00-7%' )
  AND
  emails IS  NOT NULL);

powoduje wyszukanie WSZYSTKICH rekordów spełniających warunek LIKE również tych, które pole emails mają "puste".

NIe mogę sobie z tym poradzić.]]></description>
			<author><![CDATA[dummy@example.com (wiesiek)]]></author>
			<pubDate>Mon, 25 Nov 2013 12:00:15 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=4830#p4830</guid>
		</item>
	</channel>
</rss>
