tsql:将变量转换为字符串类型的最佳方法?

时间:2009-08-12 21:15:37

标签: sql-server-2005 tsql

我编写了一个tsql过程,它将一个字符串插入到一个文本文件中,这意味着它需要将所有变量转换为字符串。而不是使用case case语句,是否更容易做到这包括所有情况并强制任何类型的字符串类型?

提前致谢

3 个答案:

答案 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)

我认为没有 - 如果有的话,我不会相信它,因为对整体格式的控制可能很少。建立自己的,它看起来就像它需要的样子。要考虑的因素:

  • 日期格式
  • 数字,前导零,小数位,+ / - 符号
  • 行长,自动换行
  • 前导空格,尾随空格,没有前导或尾随空格的字符串之间的空格

......它一直在继续。