使用LIKE或REGEX

时间:2017-06-15 15:19:07

标签: regex postgresql

SELECT name
FROM players
WHERE name ~ '(.*){8,}'

这很简单,但我似乎无法得到它。 我有一个名字列表,我必须过滤掉至少8个字符的那些...但我仍然得到完整列表。 我做错了什么?

谢谢! :)

1 个答案:

答案 0 :(得分:1)

(.*){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