Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 不是可识别的内置函数名_Sql_Sql Server_Sql Server 2008_Sql Server 2008 R2 - Fatal编程技术网

Sql 不是可识别的内置函数名

Sql 不是可识别的内置函数名,sql,sql-server,sql-server-2008,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008,Sql Server 2008 R2,创建了一个函数 CREATE FUNCTION Split_On_Upper_Case(@Temp VARCHAR(1000)) RETURNS VARCHAR(1000) AS BEGIN DECLARE @KeepValues AS VARCHAR(50) SET @KeepValues='%[^ ][A-Z]%' WHILE PATINDEX(@KeepValues COLLATE Latin1_General_Bin,@Temp)>0 SET @Temp=STUFF(@Temp,P

创建了一个函数

CREATE FUNCTION Split_On_Upper_Case(@Temp VARCHAR(1000))
RETURNS VARCHAR(1000)
AS
BEGIN
DECLARE @KeepValues AS VARCHAR(50)
SET @KeepValues='%[^ ][A-Z]%'
WHILE PATINDEX(@KeepValues COLLATE Latin1_General_Bin,@Temp)>0
SET @Temp=STUFF(@Temp,PATINDEX(@KeepValues COLLATE Latin1_General_Bin,@Temp)+1,0,' ')
RETURN @Temp
END

当我尝试EXEXEXUTE此
选择在大写字母上拆分('SaiBharath')
时,它会给出一个错误“'Split_On_大写字母'不是可识别的内置函数名”。请有人解释一下这一点在前缀中添加[dbo],然后按相同方式执行:

SELECT [dbo].[Split_On_Upper_Case] ('SaiBharath')

为了确保这一点,首先使用
use
子句设置创建函数的数据库,然后在函数调用前加上
dbo

USE <DatabaseName>

SELECT dbo.Split_On_Upper_Case('camelCase')
使用
在大写字母('camelCase')上选择dbo.Split

另外,一个好的做法是。

要在sql中执行函数,应该使用前缀
dbo

SELECT [dbo].[Split_On_Upper_Case] ('SaiBharath')

@曼苏尔-拜托?好的答案不仅有代码,还有一些解释。公平地说,微软似乎也很少对此做出解释。这个答案足以解决我在过去半个小时内试图执行函数时遇到的挫折。谢谢你的回答,但我想知道是否有办法避免使用dbo?请看我的问题: