"TRIM"不是一个被识别的内置函数名。

27

我创建了一个简单的函数

create function TRIM(@data varchar(20)) returns varchar(100)
as
begin
  declare @str varchar(20)
  set @str = rtrim(ltrim(@data))
  return @str
end

我是以以下方式执行。

declare @s varchar(25)
set @s = '      Amru    '
select TRIM(@s)
我收到了以下错误信息。
Msg 195, Level 15, State 10, Line 3
'TRIM' is not a recognized built-in function name.

请问有人能帮我找出问题所在吗?


1
你尝试过包含函数所有者(即dbo.TRIM())了吗? - hallie
这是一个更高级的话题:但是使用像您创建的UDF这样的函数通常表现非常糟糕...提前告诉您。 - Mitch Wheat
谢谢大家,我明白了。 @Mitch Wheat:我遇到了上述问题是因为我对SQL还很陌生。 - Shine
4
对于谷歌员工:SQL Server 直到 2017 年都没有 TRIM 函数。这需要你自己定义。请参见 https://dev59.com/jlQJ5IYBdhLWcg3wNjAh#54340529。 - Noumenon
5个回答

30
//use RTrim instead of Trim sql 2008

RTrim(ColumnName)

像这样

select RTrim(a.ContactName) + ' ' + RTrim(a.City) as Name_City from customers as a

25
declare @s varchar(25)
set @s = '      Amru    '
select RTRIM(LTRIM(@s))  

您也可以不使用模式来使用这种方法 :)


20

在调用用户定义函数时,您需要使用Schema前缀。在您的情况下,这很可能是“dbo”。

将选择语句更改为:

declare @s varchar(25)
set @s = '      Amru    '
select dbo.TRIM(@s)

1
对我来说,使用 dbo.TRIM 会导致 找不到列“dbo”或用户定义的函数或聚合“dbo.TRIM”,或名称不明确。 的错误。 - Eric Nemchik

0
错误在于'TRIM'不是SQL Server中的内置函数(正如错误消息所示:)。
您可以使用LTRIM和RTRIM将其包装起来,或者创建自己的TRIM函数以执行相同的操作。

他正在创建自己的UDF,名为TRIM。 - DaveShaw
@Pearl,你没有答案,答案已经有了。 - DaveShaw

0

SQL Server 试图将 TRIM 解析为内置函数。要调用用户定义的函数,您应该在函数调用前加上模式前缀。尝试类似以下方式:

declare @s varchar(25)
set @s = '      Amru      '
select dbo.TRIM(@s)

由于dbo是默认的模式前缀。

如果您想更改模式,请按以下方式声明函数:(请注意函数名称前面的模式前缀)

create function dbo.TRIM(@data varchar(20)) returns varchar(100)
as
begin
   --function body
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接