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

SQL自定义函数如何循环7次遍历行生成全名并命名新列?

问题分析与解决

核心问题

你的自定义函数存在两个关键错误:

  • 函数定义了@firstName和@lastName参数,但内部完全未使用,反而直接查询整个stray_kids表赋值给变量。SQL Server中,SELECT @变量 = ... FROM 表的写法会让变量被最后一行的结果覆盖,因此无论调用时传入哪一行的参数,函数都会返回表中最后一行的拼接值。
  • 你试图用循环遍历行的思路完全错误,标量值函数是针对每一行单独计算的,不需要手动实现循环逻辑。

修正后的函数写法

直接使用传入的参数进行拼接即可,无需查询整个表:

CREATE FUNCTION dbo.fullName(
    @firstName VARCHAR(10),
    @lastName VARCHAR(10))
RETURNS VARCHAR(20)
AS 
BEGIN
    RETURN CONCAT(@firstName, ' ', @lastName);   
END

给生成的新列命名

在调用函数的SELECT语句中,使用AS关键字指定列名:

SELECT lastName, firstName, dbo.fullName(firstName, lastName) AS full_name FROM stray_kids

更简洁的替代方案

单纯的列拼接完全不需要自定义函数,直接在查询中使用CONCAT函数即可,效率更高:

SELECT lastName, firstName, CONCAT(firstName, ' ', lastName) AS full_name FROM stray_kids

内容的提问来源于stack exchange,提问作者ckcp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:22:45