Ich habe diese Tabellen definiert:Wählen Zählung mit LIKE-Operator in Postgresql
CREATE TABLE domain (
id BIGSERIAL NOT NULL,
name varchar(255) NOT NULL,
PRIMARY KEY (id));
CREATE TABLE url (
id BIGSERIAL NOT NULL,
url text NOT NULL,
PRIMARY KEY (id));
Und ich will für jede Domain, wie viele URLs zählen. Ich versuche, dies so zu tun:
SELECT
domain.name AS dn,
SELECT COUNT(*) FROM url WHERE url.url ILIKE '%' || dn || '%'
aber ohne Glück. Syntaxfehler. Wie man es richtig macht?
Ich habe gerade ein wenig experimentiert mit split_part und ich denke, Sie wollen, 3 eher als, 1. Für 'http: // example.com'' split (URL, '/', 1) gibt '' 'http:' zurück. 'split (url, '/', 3)' gibt 'example.com' zurück. Insgesamt denke ich, Ihre Antwort ist besser als meine, wenn die Daten immer ein voll ausgebildetes Schema enthalten, wohingegen meine Antwort besser ist, wenn die Daten eine Mischung aus "http: // beispiel.de" und "beispiel.de" sein könnten. –
@AndyNichols Sie haben Recht. Mit 1 liefert diese Abfrage nichts zurück, aber wenn ich sie auf 3 ändere, läuft das einwandfrei. – user2975535
@AndyNichols Ja, ich habe nicht an das Protokoll gedacht. Wenn das Protokoll in einigen der URLs fehlt, wäre die beste Option die Funktion "regexp_split_to_array" –