<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - COPY AND NOT NULL]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=1913&amp;type=atom"/>
	<updated>2013-12-09T16:28:42Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=1913</id>
		<entry>
			<title type="html"><![CDATA[Odp: COPY AND NOT NULL]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=4877#p4877"/>
			<content type="html"><![CDATA[Serdecznie dziękuję. Wydaje mi się że dobrze mnie zrozumiałeś. Zaraz zacznę próbować. Odezwę się później.
Pozdrawiam
W.]]></content>
			<author>
				<name><![CDATA[wiesiek]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1682</uri>
			</author>
			<updated>2013-12-09T16:28:42Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=4877#p4877</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: COPY AND NOT NULL]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=4876#p4876"/>
			<content type="html"><![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)]]></content>
			<author>
				<name><![CDATA[c_michal]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=627</uri>
			</author>
			<updated>2013-12-09T12:51:22Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=4876#p4876</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: COPY AND NOT NULL]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=4873#p4873"/>
			<content type="html"><![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.]]></content>
			<author>
				<name><![CDATA[wiesiek]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1682</uri>
			</author>
			<updated>2013-12-09T08:06:49Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=4873#p4873</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: COPY AND NOT NULL]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=4872#p4872"/>
			<content type="html"><![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ę,]]></content>
			<author>
				<name><![CDATA[wiesiek]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1682</uri>
			</author>
			<updated>2013-12-08T23:50:36Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=4872#p4872</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: COPY AND NOT NULL]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=4832#p4832"/>
			<content type="html"><![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.]]></content>
			<author>
				<name><![CDATA[c_michal]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=627</uri>
			</author>
			<updated>2013-11-25T22:09:12Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=4832#p4832</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: COPY AND NOT NULL]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=4831#p4831"/>
			<content type="html"><![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ę?]]></content>
			<author>
				<name><![CDATA[wiesiek]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1682</uri>
			</author>
			<updated>2013-11-25T21:08:53Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=4831#p4831</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[COPY AND NOT NULL]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=4830#p4830"/>
			<content type="html"><![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ć.]]></content>
			<author>
				<name><![CDATA[wiesiek]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1682</uri>
			</author>
			<updated>2013-11-25T12:00:15Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=4830#p4830</id>
		</entry>
</feed>
