如何使用 UDF 标量函数打印字母表?
How to print Alphabets using UDF Scalar function?
我正在尝试通过创建 UDF 标量函数来打印字母表。
这是我的代码:
create function [dbo].[fnalphabets]()
returns varchar
as begin
declare @num int=65
while(@num<=90)
begin
set @num=@num+1
end
return char(@num)
end
当我使用
调用此函数时
select dbo.fnalphabets()
这不是 returns 预期的结果。谁能告诉我我的代码有什么问题?
试试这个:我在这里更改了它的 return varchar 大小并声明变量来存储字母字符串。并在 while 循环中将 char 值存储在其中。如下和return一样的字母串。
CREATE FUNCTION [dbo].[fnalphabets]()
RETURNS VARCHAR(MAX)
AS BEGIN
DECLARE @num INT=65
DECLARE @Alphabates VARCHAR(100)=''
WHILE(@num<=90)
BEGIN
SET @Alphabates=@Alphabates+char(@num)
SET @num=@num+1
END
RETURN @Alphabates
END
试试这个:你可以像下面那样使用Table Valued Functions
,它会在不同的行中给你每个A-Z:
CREATE FUNCTION [dbo].[fnalphabets]()
RETURNS @list TABLE (alphabet VARCHAR(10))
BEGIN
DECLARE @num INT=65
WHILE(@num<=90)
BEGIN
INSERT INTO @list SELECT CHAR(@num)
SET @num=@num+1
END
RETURN
END
SELECT * FROM [dbo].[fnalphabets]()
不需要 Loop 或 Function 任何东西。只需从 master
数据库中获取 Spt_Values
table 的数字并将它们转换为 Char
SELECT CHAR(number)
FROM master.dbo.spt_values
WHERE type = 'p'
AND NUMBER BETWEEN 65
AND 90
ORDER BY NUMBER
编辑:
来自评论:上述代码的 UDF
Go
ALTER FUNCTION [dbo].[fnalphabets]()
RETURNS VARCHAR(MAX)
AS BEGIN
DECLARE @Alphabates VARCHAR(130)='';
SELECT @Alphabates = @Alphabates +CHAR(number) +'
'
FROM master.dbo.spt_values
WHERE type = 'p'
AND NUMBER BETWEEN 65
AND 90
ORDER BY NUMBER
RETURN @Alphabates
END
我正在尝试通过创建 UDF 标量函数来打印字母表。 这是我的代码:
create function [dbo].[fnalphabets]()
returns varchar
as begin
declare @num int=65
while(@num<=90)
begin
set @num=@num+1
end
return char(@num)
end
当我使用
调用此函数时select dbo.fnalphabets()
这不是 returns 预期的结果。谁能告诉我我的代码有什么问题?
试试这个:我在这里更改了它的 return varchar 大小并声明变量来存储字母字符串。并在 while 循环中将 char 值存储在其中。如下和return一样的字母串。
CREATE FUNCTION [dbo].[fnalphabets]()
RETURNS VARCHAR(MAX)
AS BEGIN
DECLARE @num INT=65
DECLARE @Alphabates VARCHAR(100)=''
WHILE(@num<=90)
BEGIN
SET @Alphabates=@Alphabates+char(@num)
SET @num=@num+1
END
RETURN @Alphabates
END
试试这个:你可以像下面那样使用Table Valued Functions
,它会在不同的行中给你每个A-Z:
CREATE FUNCTION [dbo].[fnalphabets]()
RETURNS @list TABLE (alphabet VARCHAR(10))
BEGIN
DECLARE @num INT=65
WHILE(@num<=90)
BEGIN
INSERT INTO @list SELECT CHAR(@num)
SET @num=@num+1
END
RETURN
END
SELECT * FROM [dbo].[fnalphabets]()
不需要 Loop 或 Function 任何东西。只需从 master
数据库中获取 Spt_Values
table 的数字并将它们转换为 Char
SELECT CHAR(number)
FROM master.dbo.spt_values
WHERE type = 'p'
AND NUMBER BETWEEN 65
AND 90
ORDER BY NUMBER
编辑: 来自评论:上述代码的 UDF
Go
ALTER FUNCTION [dbo].[fnalphabets]()
RETURNS VARCHAR(MAX)
AS BEGIN
DECLARE @Alphabates VARCHAR(130)='';
SELECT @Alphabates = @Alphabates +CHAR(number) +'
'
FROM master.dbo.spt_values
WHERE type = 'p'
AND NUMBER BETWEEN 65
AND 90
ORDER BY NUMBER
RETURN @Alphabates
END