sql - LISTAGG 内的 RTRIM?

标签 sql oracle

美好的一天。我正在编写一个使用 LISTAGG 并返回结果的查询。这是我到目前为止的代码。

   select 
    listagg(rtrim(shop_cde, 1), ', ') within group (order by shop_cde) col1,
    business_cde
    from mytable
    group by business_cde

我希望这会返回结果,聚合它们,并从 shop_cde 的右侧修剪掉 1 个字符。然而,似乎没有发生修剪。 Shop_cde 仍然完整显示。有谁知道如何在 LISTAGG 函数中 TRIM ?

最佳答案

trim() 函数通常用于删除前导空格和尾随空格(尽管您也可以删除其他字符)。

如果您想丢弃最后一个字符,请使用substr():

select listagg(substr(shop_cde, 1, length(shop_cde) - 1), ', ') within group (order by shop_cde) col1,
       business_cde
from mytable
group by business_cde

关于sql - LISTAGG 内的 RTRIM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57116806/

相关文章:

asp.net - Oracle.ManagedDataAccess : TNS:could not resolve the connect identifier specified

c# - Dapper DynamicParameters 返回错误

java - 寻找以下代码的优化

java - JPA 使用 SELECT 连接表

mysql - 锁定通过触发器操作的表的后果?

java - 从数据库加载多个(很多)对象,将其保存在ehcache中并使用主键查询

oracle - 计算汉明距离的索引访问

mysql - 在 SQL 中使用 COUNT(Distinct)

mysql - 通过PHP将数据插入MySQL

甲骨文 : Export select statement result set as INSERT SQL Statements similar to SQL developer export