You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL作业语法问题求助:字符串拼接、字段修剪及统计查询

你的SQL作业任务解决方案

没问题,我来帮你逐个搞定这些SQL作业任务,每个需求都会给出正确的代码并讲清楚细节:

a. 字符串拼接+修剪尾随空格+虚拟列命名

首先,我们需要先修剪vend_name和vend_location的尾随(以及开头)空格,再拼接成name (location)的格式,同时给虚拟列命名。不同数据库的拼接和修剪函数略有差异,我给你列出主流数据库的写法:

MySQL/PostgreSQL 版本

SELECT 
  CONCAT(TRIM(vend_name), ' (', TRIM(vend_location), ')') AS vendor_info
FROM vendors;
  • TRIM()函数会自动去掉字段前后的所有空格(包括你提到的尾随空格)
  • CONCAT()用来把修剪后的名称、括号、地点拼接成目标格式
  • AS vendor_info就是给这个新生成的虚拟列命名,满足需求c

SQL Server 版本

如果是SQL Server 2017及以上,也可以用TRIM();旧版本需要用LTRIM(RTRIM())分别去掉开头和尾随空格:

-- SQL Server 2017+
SELECT 
  CONCAT(TRIM(vend_name), ' (', TRIM(vend_location), ')') AS vendor_info
FROM vendors;

-- 旧版SQL Server
SELECT 
  CONCAT(LTRIM(RTRIM(vend_name)), ' (', LTRIM(RTRIM(vend_location)), ')') AS vendor_info
FROM vendors;

Oracle 版本

Oracle用||做字符串拼接,TRIM()同样处理空格:

SELECT 
  TRIM(vend_name) || ' (' || TRIM(vend_location) || ')' AS vendor_info
FROM vendors;

d. 查询供应商‘DLL01’提供的产品数量

假设产品表名为products,且通过vend_id关联供应商表,用COUNT()统计即可:

SELECT COUNT(*) AS num_products
FROM products
WHERE vend_id = 'DLL01';
  • COUNT(*)会统计该供应商下所有产品的行数
  • 如果想排除产品ID为NULL的记录,可以换成COUNT(product_id)
  • AS num_products给统计结果列命名

e. 查询每个供应商提供的产品数量

这里需要用GROUP BY按供应商ID分组,再统计每组的产品数量:

SELECT 
  vend_id,
  COUNT(*) AS num_products
FROM products
GROUP BY vend_id;
  • GROUP BY vend_id会把同一个供应商的所有产品归为一组
  • COUNT(*)统计每组内的产品数量,最终输出vend_id和num_products两列

如果需要包含没有提供任何产品的供应商(显示数量为0),可以用左连接关联供应商表和产品表:

SELECT 
  v.vend_id,
  COUNT(p.product_id) AS num_products
FROM vendors v
LEFT JOIN products p ON v.vend_id = p.vend_id
GROUP BY v.vend_id;
  • 左连接会保留所有供应商记录,即使没有对应产品
  • COUNT(p.product_id)会忽略NULL值,所以没有产品的供应商会显示0

内容的提问来源于stack exchange,提问作者Javier Maguiña

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:23:04