【问题标题】:SQL, return comma separated list of each value from SELECTSQL,从 SELECT 返回每个值的逗号分隔列表
【发布时间】:2020-10-04 07:27:31
【问题描述】:

我正在制作一个快速网络应用程序,作为其中的一部分,我正在查询一个 SQL 数据库,该数据库具有一个用户表 (dbo.tbl_user,其中包含姓名、角色、电子邮件等数据。

我想查询数据库,以便以逗号分隔值返回名称列表。当我使用'SELECT name FROM dbo.tbl_user' 时,我得到:

[
    {
        "name": "Tom"
    },
    {
        "name": "Dick"
    },
    {
        "name": "Harry"
    }
]

随心所欲

[
    "Tom","Dick","Harry"
]

在线搜索我只能找到返回[{"Tom,Dick,Harry"}] 的方法,这不是我想要的,因为这些值没有被分离出来。任何帮助将不胜感激。

【问题讨论】:

  • 看看“stackoverflow.com/questions/194852/…”是否回答了你的问题。
  • 嗨,我不想要单个文本字符串,而是多个逗号分隔的文本字符串
  • 这是一个 JSON 数组。我建议搜索这个词
  • 当您使用SELECT name FROM dbo.tbl_user 时,您只是要求一个每行有一列的结果集,即name 列。这就是为什么你会得到三个不同的记录——这就是你所要求的。您需要研究将这些行结果连接成一个满足 JSON 要求的结果值的方法。
  • 原始查询返回 结果集的 JSON 表示,根据使用的查询方法(如果在代码中使用本地 SqlConnection 会有所不同,它使用 ResultSet 代替..)。这可能是一个固定的格式/结构,独立于数据。在消费者中执行转换以(在 JSON 反序列化之后)将对象数组转换为名称字符串数组。

标签: sql sql-server azure express


【解决方案1】:

你为什么不简单地使用 JS 从查询中得到你想要的?

const sqlResult = [
    {
        "name": "Tom"
    },
    {
        "name": "Dick"
    },
    {
        "name": "Harry"
    }
];

const onlyNamesArr = sqlResult.map(i => i.name);   // returns ["Tom", "Dick", "Harry"]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多