SQL 字符串函数如何实现字符串去重?

因此,SQL 重复数据删除并不简单,您必须进行组合。

说说第一个简单的去重符。
使用 PostgreSQL 的 string_to_array 确保不能换行,DISTINGUISH 进行重复数据删除,然后使用 string_agg 解压。
MySQL8 .0+比较复杂,需要这样做。

子串去重字段也是拆分、去重,然后再次拼接在一起。
PostgreSQL使用string_to_array,MySQL必须自己配置。
行级重复数据删除,直接使用DISTINCT或GROUPBY。

对于复合重复数据删除,例如自定义分隔符,您必须编写自定义函数,例如MySQL。

不同的数据库,PostgreSQL很灵活,MySQL找到自己的路。

综上所述,拆分、去重、合并的时候,看数据库的功能,选择工具。

SQL中的三种去重方式:DISTINCT,GROUP BY与ROW_NUMBER()

嘿嘿,说到SQL复制,这个东西我很熟悉。
刚入行的时候,写SQL去重是一件很头疼的事情。
现在回想起来,常用的方法其实只有三种。

第一种方法是使用 DISTINCT 关键字。
就像从一堆苹果中挑选一个独特的苹果一样简单和容易。
我记得有一次,我帮助一个朋友编写一个查询来查找客户表中唯一的客户名称。
当时用的就是这个方法,代码写成:DISTINCT customer_name FROM customer_table;现在,不会出现重复的名称。
第二种是 GROUP BY 语句。
这个技巧就像按颜色对苹果进行分类,然后每种颜色只挑选一个。
我在电商平台工作的时候,经常使用这种方法来计算每个订单中不同产品的数量。
代码可能如下所示: SELECT column_name FROM table_name GROUP BY column_name;通过这种方式,您可以找到每个唯一值的记录数。

最后是 ROW_NUMBER 函数。
这就像给苹果做标记,然后根据一定的规则(比如重量)对它们进行分类,并让苹果只保留一个标签。
这个函数经常和子查询一起使用,非常高级。
我认为,有必要找到每笔订单单价最高的产品。
这就是我所做的: FROM (SELECT, ROW_NUMBER() OVER (section BY order_order by value DESC) AS rn FROM table_name) AS t WHERE rn = 1 ;这样,仅保留每个订单价值最高的产品。

总的来说,DISTINCT是最基本的,GROUP BY是分组后去重,ROW_NUMBER是根据一定的规则去重。
这三种方法各有其优点。
关键是你想达到什么结果。
不过话说回来,在实际操作中,这个东西要灵活运用,不能死板。