【发布时间】:2023-04-10 05:19:01
【问题描述】:
我正在尝试运行此查询:
SELECT
[DateAdded], [DateUpdated],
[dbo].[firstchartoupper]([LastName]) AS [LastName],
[FirstName], [NPI], [StreetAddress],
[CITY], [ZIP], [STATE], [Organization],
[ReportYearMonth], [FileUploadDate]
FROM
tt
[dbo].[firstchartoupper] 是我编写的自定义用户定义标量函数
CREATE FUNCTION [dbo].[firstchartoupper]
(@name AS NVARCHAR(255))
RETURNS NVARCHAR(255)
AS
BEGIN
DECLARE @CHAR NVARCHAR(1);
DECLARE @rem NVARCHAR(50);
DECLARE @output NVARCHAR(255);
IF @name IS NULL
RETURN NULL;
SET @char = SUBSTRING(@name, 1, 1);
SET @rem = SUBSTRING(@name, 2, LEN(@name));
SET @output = @char + @rem;
RETURN @output;
END
但是,我遇到了一个错误
找不到列 dbo 或用户定义的函数或聚合标量
【问题讨论】:
-
能否检查标量函数文件夹下的DB中是否创建了函数
-
我认为该 SQL 没有任何问题。您的
SELECT语句是否在与创建函数的数据库相同的数据库中运行? -
换一种说法,该功能试图实现什么?它采用
@name的值并分成两部分,然后将它们连接回来。因此,使用 .like'Jones'之类的名称,它将其拆分为'J'和'ones'部分,然后将它们连接回'Jones'。该函数实际上并没有实现任何目标。 -
也许他想获取大写的第一个字符。
-
那么,@Ayan_84,他们将拥有
SET @output = UPPER(@char)+@rem;
标签: sql sql-server function