今天同事遇到了個問題記錄下
創建語句如下
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’)