提问人:ckcp 提问时间:4/17/2023 最后编辑:Jonasckcp 更新时间:5/10/2023 访问量:94
如何使此代码循环 7 次并转到下一行?
How do I make this code loop 7 times and go to the next row?
问:
我一直在自己学习SQL,我被这个难住了。
在我正在处理的这个表中,我有一个人的名字和姓氏作为一列,我正在使用一个用户定义的函数来连接这两个列以获得他们的全名。
我所拥有的适用于一列,但我不知道如何循环它。这是我的代码。
CREATE FUNCTION dbo.fullName(
@firstName VARCHAR(10),
@lastName VARCHAR(10))
RETURNS VARCHAR(20)
AS
BEGIN
DECLARE @fullName VARCHAR(20)
SELECT @fullName = CONCAT(firstName, ' ', lastName) FROM stray_kids
RETURN @fullName;
END
然后当我使用 SELECT lastName, firstName,dbo.fullName(firstName, lastName) FROM stray_kids 调用它时 它出现了我添加的图像,这对第一行来说很棒,然后我尝试添加一个 while 循环和计数器等,但无法弄清楚。另外,我将如何命名新列名称?
如果你能帮忙,谢谢!<3 我的输出
答:
2赞
Stu
4/17/2023
#1
使用计算列可以轻松实现您所追求的功能
alter table stray_kids
add FullName as CONCAT(firstName, ' ', lastName);
然后你可以简单地
select FullName from stray_kids;
较新版本的 SQL Server 还支持concat_ws(' ', FirstName, LastName);
如果你真的想使用一个函数,你所需要的只是
CREATE FUNCTION dbo.fullName(
@firstName VARCHAR(10),
@lastName VARCHAR(10))
RETURNS VARCHAR(21)
AS
BEGIN
RETURN CONCAT(@firstName, ' ', @lastName);
END
请注意,返回类型需要考虑额外的空格字符...10 个字符似乎很短,所以也许使用varchar(50)
评论
0赞
ckcp
4/18/2023
非常感谢!我想让它成为一个函数,这样我就可以理解如何使函数更多一点。你是最好的!
评论
SELECT @fullName = CONCAT(@firstName, ' ', @lastName) /*FROM stray_kids*/
SELECT lastName, firstName,CONCAT(firstName, ' ', lastName) FROM stray_kids