我编写了一个tsql过程,它将一个字符串插入到一个文本文件中,这意味着它需要将所有变量转换为字符串。而不是使用case case语句,是否更容易做到这包括所有情况并强制任何类型的字符串类型?
提前致谢
答案 0 :(得分:27)
全部大写是文字文本,小写是应该插入值的内容:
CAST(expression AS CHAR)
-- or:
CAST(expression AS VARCHAR)
您可以选择指定长度。
不幸的是,如果您希望以与默认表示形式不同的任何方式对其进行格式化,那么日期时间会更难。
我的信息来自MSDN site。我认为你必须仔细阅读该网站和其他网站,并稍微考虑一下,但希望CAST
功能将是一个良好的开端。
答案 1 :(得分:1)
每次都需要转换/转换它。我使用了一个函数:
CREATE FUNCTION QuoteNull
(
@InputStr varchar(8000) --value to force to string
)
RETURNS
varchar(8000)
AS
BEGIN
RETURN COALESCE(''''+@InputStr+'''','null')
END
它会在值周围放置单引号,或者只是单词null,如果它为null,但您可以根据需要自定义它。
这是一个自动处理格式化日期的版本:
CREATE FUNCTION QuoteNull
(
@InputStr sql_variant --value to force to string
)
RETURNS
varchar(8000)
AS
BEGIN
DECLARE @String varchar(8000)
SET @String=COALESCE(''''+ CASE SQL_VARIANT_PROPERTY(@InputStr,'BaseType')
WHEN 'datetime' THEN CONVERT(varchar(23),@InputStr,121)
ELSE CONVERT(varchar(8000),@InputStr)
END
+'''','null')
RETURN @String
END
答案 2 :(得分:0)
我认为没有 - 如果有的话,我不会相信它,因为对整体格式的控制可能很少。建立自己的,它看起来就像它需要的样子。要考虑的因素:
......它一直在继续。