Oracle中添加逗号(,)

发布于 2024-10-02 02:58:00 字数 493 浏览 7 评论 0原文

给出以下查询:

select distinct subject_key
from mytable

结果:

subject_key
-----------
90896959
90895823
90690171
90669265
90671321

我如何在 Oracle 中编写查询(使用 Aqua Data Studio 后端 Oracle 8i) 结果:

subject_key
-----------
90896959,
90895823,
90690171,
90669265,
90671321

谢谢大家! 我是否希望将输出更改为横向而不是向下,如下所示。怎么写啊,同一个平台。谢谢。

subject_key
90896959,  90895823, 90690171,  90669265, 90671321

Given this query:

select distinct subject_key
from mytable

Result:

subject_key
-----------
90896959
90895823
90690171
90669265
90671321

How do i write a query in Oracle (using Aqua Data Studio backend Oracle 8i) result:

subject_key
-----------
90896959,
90895823,
90690171,
90669265,
90671321

THANKS ALL!
Should I wish to change the output across instead of down like below. How do I write it, same platform. Thanks.

subject_key
90896959,  90895823, 90690171,  90669265, 90671321

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

归属感 2024-10-09 02:58:00

Oracle 没有像 MySQL 的 GROUP_CONCAT 这样的功能,而这正是您所要求的功能。 此页面提供了此类字符串聚合的各种选项 - 一种是使用自定义函数:

CREATE OR REPLACE FUNCTION get_subjectkey (IN_PK IN MYTABLE.PRIMARY_KEY%TYPE)
RETURN VARCHAR2
IS
  l_text  VARCHAR2(32767) := NULL;
BEGIN

  FOR cur_rec IN (SELECT subject_key 
                    FROM MYTABLE 
                   WHERE primary_key = IN_PK) LOOP
    l_text := l_text || ',' || cur_rec.ename;
  END LOOP;

  RETURN LTRIM(l_text, ',');
END;

然后您可以像这样使用它:

SELECT get_subjectkey(?) AS subject_key
  FROM DUAL

...替换“?”与主键值。

以前

假设您只想在列值末尾添加逗号,请使用:

SELECT DISTINCT TO_CHAR(subject_key) || ','
  FROM MYTABLE

双管道 --“||” -- 是 Oracle [、PostgreSQL 和现在的 ANSI] 在 SQL 中连接字符串的方法。我使用 TO_CHAR 显式转换数据类型,但您可以使用:

SELECT DISTINCT subject_key || ','
  FROM MYTABLE

...如果没有必要。

Oracle doesn't have a function like MySQL's GROUP_CONCAT, which is exactly the functionality you're asking for. Various options for such string aggregation are provided on this page - one is to use a custom function:

CREATE OR REPLACE FUNCTION get_subjectkey (IN_PK IN MYTABLE.PRIMARY_KEY%TYPE)
RETURN VARCHAR2
IS
  l_text  VARCHAR2(32767) := NULL;
BEGIN

  FOR cur_rec IN (SELECT subject_key 
                    FROM MYTABLE 
                   WHERE primary_key = IN_PK) LOOP
    l_text := l_text || ',' || cur_rec.ename;
  END LOOP;

  RETURN LTRIM(l_text, ',');
END;

Then you'd use it like:

SELECT get_subjectkey(?) AS subject_key
  FROM DUAL

...replacing the "?" with the primary key value.

Previously

Assuming you just want to add a comma to the end of the column value, use:

SELECT DISTINCT TO_CHAR(subject_key) || ','
  FROM MYTABLE

The double pipe -- "||" -- is the Oracle [,PostgreSQL and now ANSI] means of concatenating strings in SQL. I used TO_CHAR to explicitly convert the data type, but you could use:

SELECT DISTINCT subject_key || ','
  FROM MYTABLE

...if that's not necessary.

余厌 2024-10-09 02:58:00

最有可能的是: SELECT subject_key + ',' AS subject_key FROM mytable

至少在 T-SQL 中是这样的。 PL-SQL 可能略有不同。

most likely: SELECT subject_key + ',' AS subject_key FROM mytable

At least that's how in T-SQL. PL-SQL may be slightly different.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文