Funkcja REPLACE
powinno wystarczyć, aby rozwiązać ten problem.
stół Test:
CREATE TABLE test (text varchar(100));
INSERT INTO test (text) VALUES ('pxq');
INSERT INTO test (text) VALUES ('static-text-here/pxq');
INSERT INTO test (text) VALUES ('static-text-here/1abcdefgpxq');
INSERT INTO test (text) VALUES ('static-text-here/1abcdefg1abcdefgpxq');
Zapytanie:
SELECT text, REPLACE(text, '1abcdefg1abcdefg', '1abcdefg') AS text2
FROM test;
Wynik:
TEXT TEXT2
pxq pxq
static-text-here/pxq static-text-here/pxq
static-text-here/1abcdefgpxq static-text-here/1abcdefgpxq
static-text-here/1abcdefg1abcdefgpxq static-text-here/1abcdefgpxq
AFAIK funkcji REPLACE
nie jest w standardzie SQL99, ale większość DBMS ją wspierać. Przetestowałem to pod here i działa z MySQL, PostgreSQL, SQLite, Oracle i MS SQL Server.
Co zrobić, jeśli występuje wiele powtórzeń? Co z takimi rzeczami jak "aaaa"? Czy to 'aa' dwa razy następuje po' a' (w wyniku czego 'aaa') lub czy' a' jest powtórzone 5 razy, powodując "a"? –
@ m.buettner Nie ma wielu powtórzeń. "Ciąg, który się powtarza" rozpoczyna się zaraz po tekście statycznym i powtarza się dokładnie jeden raz. – Jeremy