PostgreSQL-WHERE条件中的正则表达式

  在我目前接触的工作中,正则表达式通常用于name字段的过滤。此处name字段定义为:纯文本,业务上一般对应姓名、名称之类的值。

示例1:

【功能】查询不是纯中文文本的字段值

【结果示例】abcde、abc de、123 4567 8910、12345678910、a一二三、TEST_测试01、abc/一二三、abc?de、一bc、(空格)一二三、一二三1、一/二、一二(三)、一(空格)二、一。

【业务场景】适用于查找不是纯中文字段值的业务场景

  例如:删除某字段中非中文字段的值,首先要根据条件找出这些值。

AND NOT 
    name ~ '^[\u4e00-\u9fa5]{0,}$'

示例2:

【功能】查询不含中文的字段值

【结果示例】abcde、abc de、123 4567 8910、12345678910、abc?de

【业务场景】适用于查找不含中文的字段值

  例如:业务上允许用户名为类似‘用户1’、‘用户a’、‘用户 1’、‘用 户’的值,但不允许为纯数字、纯英文、纯标点符号或数字+英文+标点符号,此时可用正则表达式过滤。

AND NOT 
    name ~ '[\u2e80-\ua4cf]|[\uf900-\ufaff]|[\ufe30-\ufe4f]'

 

posted @ 2022-02-16 16:07  丁丁要学习  阅读(688)  评论(0)    收藏  举报