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

这真的很简单,但我似乎无法得到它。 我有一个名单列表,我必须筛选出至少8个字符的列表......但我仍然可以看到完整列表。 我在做什么错?POSTGRESQL至少8个字符与LIKE或REGEX

谢谢! :)

+1

你只是去寻找'那里CHAR_LENGTH(名称)<8'? –

+0

是的,谢谢:)我让它太难了......; p – Lily

+0

顺便说一句,正则表达式模式应该是'',{8,}'或'LIKE'模式应该是''%''。但OFC,检查长度要容易得多。 – pozs

回答

1

A (.*){8,}正则表示匹配任何零个或多个字符8次或更多次

如果您想匹配任何8个或更多的字符,您可以使用.{8,}

但是,使用character_lenth更适合这一任务:在字符串中的字符

char_length(string)character_length(string)         INT              数

CREATE TABLE table1 
    (s character varying) 
; 

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

online demo

enter image description here

相关问题