【问题标题】:Separate merged SQL rows with a comma用逗号分隔合并的 SQL 行
【发布时间】:2013-08-22 11:06:06
【问题描述】:

我在将我从 SQL 查询中检索到的值转换为正确格式时遇到了一些麻烦。

我已经设法将多行加入到一个值中,但是我不确定如何用逗号分隔每个值。本质上,我需要检索产品的所有 ID,例如,如果数据库的值为 '5,6,9,1' '1,3,4' 和 '2,1' 我希望它抛出每个喜欢之间的逗号 -> '5,6,9,1,1,3,4,2,1' 相反正在做一些更像 -> '5,6,911,3,42,1' 这就是它目前正在做。

我正在使用的代码如下。任何帮助将不胜感激。

谢谢!

$hist = "SELECT ORDITEMS FROM cust_orderc WHERE ORDDATE > 
to_date('".$olddate."','dd/mm/yyyy')";


$histitem = OCIParse($db, $hist);
OCIExecute($histitem);

while($row = oci_fetch_array($histitem)){
    $pastitem .= $row['ORDITEMS'];  
}

echo "$pastitem";

【问题讨论】:

    标签: php sql merge rows comma


    【解决方案1】:

    您可以在 oracle 中使用 LISTAGG 执行相同操作

    $hist = "SELECT LISTAGG(ORDITEMS) as ORDITEMS FROM cust_orderc WHERE ORDDATE > to_date('".$olddate."','dd/mm/yyyy')";
    

    编辑或PHP方式

    $pastitem = '';
    while($row = oci_fetch_array($histitem)){
        $pastitem .= $row['ORDITEMS'] . ',';  
    }
    $pastitem = trim($pastitem, ",");
    echo $pastitem;
    

    【讨论】:

    • 对于oracle数据库,等效函数为wm_concat()
    • @MarkBaker 谢谢,我从来没有注意到这个查询与 oracle 数据库有关。 :)
    • wm_concat() 从未 (IIRC) 正式记录或支持;我相信 Oracle 11g 具有相同目的的 LISTAGG() 函数
    • @MarkBaker 包括两种方式。 :)
    • 啊,没有意识到你在那儿添加了那个.. 非常感谢!这把戏做得很好:D 如果可以的话,我会投票,还没有 15 声望>.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    相关资源
    最近更新 更多