美文网首页PostgreSQL技能图谱PostgreSQL
PostgreSQL Like查询与正则表达式

PostgreSQL Like查询与正则表达式

作者: 西召 | 来源:发表于2019-04-20 22:07 被阅读2次

    安装PostgreSQL之后,PostgreSQL会创建一个名为“postgres”的用户,创建一个名为“postgres”的数据库。我们就可以使用这个默认的库做实验。

    首先建表并插入数据:

    CREATE TABLE public.user(
        ID SERIAL PRIMARY KEY NOT NULL,
        UserID varchar(100) NOT NULL,
        UserName varchar(100) NOT NULL,
        PhoneNumber varchar(20) NOT NULL
    );
    
    INSERT INTO public."user" (userid, username, phonenumber) VALUES('u1', 'tom', '123');
    INSERT INTO public."user" (userid, username, phonenumber) VALUES('u2', 'Tom', '123');
    INSERT INTO public."user" (userid, username, phonenumber) VALUES('u3', 'TOM', '321');
    INSERT INTO public."user" (userid, username, phonenumber) VALUES('u3', 'Jane', '456');
    INSERT INTO public."user" (userid, username, phonenumber) VALUES('u3', 'jane', '654');
    INSERT INTO public."user" (userid, username, phonenumber) VALUES('u3', 'Janey', '789');
    INSERT INTO public."user" (userid, username, phonenumber) VALUES('u3', 'janey', '987');
    

    使用普通的like查询

    select * from public."user" where username like '%O%';
    

    查询结果:

    id userid username phonenumber
    3 u3 TOM 321

    使用like查询需要%号作为占位符,且PostgreSQL默认区分大小写。

    使用不区分大小写的ilike查询

    select * from public."user" where username ilike '%O%';
    

    查询结果:

    id userid username phonenumber
    1 u1 tom 123
    2 u2 Tom 123
    3 u3 TOM 321

    使用不需要占位符的~*查询

    select * from public."user" where username ~* 'O';
    

    查询结果:

    id userid username phonenumber
    1 u1 tom 123
    2 u2 Tom 123
    3 u3 TOM 321

    PostgreSQL正则表达式

    select * from public."user" where username SIMILAR TO '%(t|j)%';
    

    查询结果:

    id userid username phonenumber
    1 u1 tom 123
    5 u3 jane 654
    7 u3 janey 987

    总结

    PostgreSQL的模糊匹配和模式查询非常强大,这里只是举了几个简单的小例子做了一下对比。更多的用法可以访问下面的参考链接了解。

    如果感觉正则表达式还不能满足你的要求,可以尝试着写一个自定义函数。

    另外,由于这些查询属于pgsql的方言,如果要考虑以后的数据库迁移成本的话,谨慎使用。

    参考链接

    相关文章

      网友评论

        本文标题:PostgreSQL Like查询与正则表达式

        本文链接:https://www.haomeiwen.com/subject/gnrrgqtx.html