Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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
创建用于转换为字符串的TSQL快捷方式_Sql_Sql Server_Tsql_Sql Server 2012 - Fatal编程技术网

创建用于转换为字符串的TSQL快捷方式

创建用于转换为字符串的TSQL快捷方式,sql,sql-server,tsql,sql-server-2012,Sql,Sql Server,Tsql,Sql Server 2012,我想在SQL Server 2012上编写一个用户定义函数,将任何值转换为字符串/文本 当我检查SQL Server时,Convert函数参数的类型是“expression”,但我似乎无法将此类型用于我自己的用户定义函数。还有其他选择吗 CREATE FUNCTION [dbo].[Text] ( @value expression ) RETURNS nvarchar(max) AS BEGIN RETURN Convert(nvarchar(max), @value); END

我想在SQL Server 2012上编写一个用户定义函数,将任何值转换为字符串/文本

当我检查SQL Server时,Convert函数参数的类型是“expression”,但我似乎无法将此类型用于我自己的用户定义函数。还有其他选择吗

CREATE FUNCTION [dbo].[Text]
(
    @value expression
)
RETURNS nvarchar(max)
AS
BEGIN
   RETURN Convert(nvarchar(max), @value);
END
我收到以下错误消息:


列、参数或变量#1:找不到数据类型表达式。

如果有人感兴趣,请找到答案:

CREATE FUNCTION [dbo].[Text]
(
    @value SQL_VARIANT
)
RETURNS nvarchar(max)
AS
BEGIN
   RETURN Convert(nvarchar(max), ISNULL(@value,''));
END

似乎做了我需要的事情。

我不知道为什么要使用内置功能。但是,您需要的数据类型是sql\u variant

创建函数[dbo].[Text] ( @值sql_变量
)

你为什么要这样做?您正在将现有的Convert函数包装到另一个函数中。这可能看起来是一个疯狂的想法,但它有助于抽象编码工作和处理公式表达式中的空值。我刚刚也找到了它,您比我先找到了:)参考: