<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - Wycięcie cżęści testu]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=613&amp;type=atom"/>
	<updated>2011-07-24T09:45:26Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=613</id>
		<entry>
			<title type="html"><![CDATA[Odp: Wycięcie cżęści testu]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2610#p2610"/>
			<content type="html"><![CDATA[Cały zbiór [007], [014] itd. możesz przedstawić/zobrazować jako wyrażenie regularne np.:

[code]\[\d{3}\][/code]

Idąc dalej dostępna jest funkcja regexp_replace, którą możliwe jest wycięcie fragmentu napisu w oparciu o taki wzorzec.:

[code]SELECT regexp_replace('przelew [100]', $$\[\d{3}\]$$, '[]')[/code]

W efekcie za każdym razem otrzymasz 'przelew []'. Jeżeli cyfr może być mniej/więcej jak trzy, to zawsze możesz użyć \d+, czyli po prostu jedna lub więcej cyfr.

Jeżeli zamiast wycinać, chcesz wyciągnąć te liczby, to można by użyć substring(string from pattern):

[code]SELECT substring('przelew [015]' from  $$\d{3}$$)
 substring
-----------
 015
(1 row)[/code]]]></content>
			<author>
				<name><![CDATA[gszpetkowski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1223</uri>
			</author>
			<updated>2011-07-24T09:45:26Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2610#p2610</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Wycięcie cżęści testu]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2609#p2609"/>
			<content type="html"><![CDATA[Mój błąd w pytaniu w pierwszym poście.. Owszem to zadziała. Tylko jest jeden problem nie zawsze tam będą zera. To może wyglądać np. tak przelew [007], przelew [014], przelew [030]. I chciałbym wyciągnąć to co jest w kwadratowym nawiasie. Tylko nie wiem jak to ruszyć.

Pozdrawiam]]></content>
			<author>
				<name><![CDATA[hifek]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1253</uri>
			</author>
			<updated>2011-07-24T08:37:58Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2609#p2609</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Wycięcie cżęści testu]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2605#p2605"/>
			<content type="html"><![CDATA[Nie jestem pewien, czy dobrze rozumiem, ale przykładowo mógłbyś użyć funkcji [url=http://www.postgresql.org/docs/current/static/functions-string.html]replace(string text, from text, to text)[/url]:

[code]SELECT replace('przelew [000]', '000', '');
  replace   
------------
 przelew []
(1 row)[/code]

Generalnie Postgres posiada wiele wbudowanych funkcji i operatorów do pracy z napisami, do cięższych przypadków można używać [url=http://www.postgresql.org/docs/9.0/static/functions-matching.html]wyrażeń regularnych[/url], a to tych najcięższych zawsze można podpiąć język proceduralny jak [url=http://www.postgresql.org/docs/current/static/plperl.html]PL/Perl[/url].]]></content>
			<author>
				<name><![CDATA[gszpetkowski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1223</uri>
			</author>
			<updated>2011-07-23T10:07:56Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2605#p2605</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Wycięcie cżęści testu]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2604#p2604"/>
			<content type="html"><![CDATA[Witam

Poradźcie w jaki sposób z wyrażenia 'przelew [000]' wyciąć te trzy zera?

Pozdrawiam]]></content>
			<author>
				<name><![CDATA[hifek]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1253</uri>
			</author>
			<updated>2011-07-22T21:24:11Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2604#p2604</id>
		</entry>
</feed>
