今天同事遇到了个问题记录下
创建语句如下
IF OBJECT_ID('GET_NUMBER2') IS NOT NULL
DROP FUNCTION GET_NUMBER2
use ZLN_ZFS_CRM
GO
create function get_number2(@s varchar(100))
returns varchar(100)
as
begin
while patindex('%[^0-9]%',@s) > 0
begin
set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')
end
return @s
end
go
--测试
PRINT GET_NUMBER('2012中国China1949bj')
GO
sqlserver写了个函数 主要是用于筛选出字段中的数字
如图函数已经创建成功了
同事使用这种方法调用函数
select * from get_number2(‘2012中国China1949bj’)
报错信息是
消息 208,级别 16,状态 3,第 1 行
对象名 ‘get_number2’ 无效。
因为这是一个标量函数并不是表值函数所以我们应该是这么调用的
select get_number2(‘2012中国China1949bj’)
但是报错
消息 195,级别 15,状态 10,第 1 行
‘get_number2’ 不是可以识别的 内置函数名称。
最后是要以数据库名+dbo+函数名开始调用
select ZLN_ZFS_CRM.dbo.get_number2(‘2012中国China1949bj’)