2017-06-15 5 views
1
SELECT name 
FROM players 
WHERE name ~ '(.*){8,}' 

Es ist wirklich einfach, aber ich kann nicht scheinen, es zu bekommen. Ich habe eine Liste mit Namen und ich muss diejenigen mit mindestens 8 Zeichen herausfiltern ... Aber ich bekomme immer noch die vollständige Liste. Was mache ich falsch?POSTGRESQL mindestens 8 Zeichen im Namen mit LIKE oder REGEX

Danke! :)

+1

Suchen Sie einfach nach 'wo char_length (name) <8'? –

+0

Ja, danke :) Ich habe es zu schwierig gemacht ...; p – Lily

+0

BTW das Regex-Muster wäre ''. {8,}'' oder das 'LIKE' Muster wäre' '________%' '. Aber OFC, die Überprüfung der Länge ist so viel einfacher. – pozs

Antwort

1

Ein (.*){8,} Regex bedeutet mit einer beliebigen Null oder mehr Zeichen 8 oder mehr Mal übereinstimmen.

Wenn Sie 8 oder mehr Zeichen zuordnen möchten, verwenden Sie .{8,}.

jedoch mit character_lenth ist besser geeignet für diese Aufgabe:

char_length(string) oder character_length(string)         int               Anzahl der Zeichen in Zeichenfolge

CREATE TABLE table1 
    (s character varying) 
; 

INSERT INTO table1 
    (s) 
VALUES 
    ('abc'), 
    ('abc45678'), 
    ('abc45678910') 
; 
SELECT * from table1 WHERE character_length(s) >= 8; 

Siehe online demo

enter image description here

Verwandte Themen