2009-08-12 58 views
11

我写这将插入一个字符串到一个文本文件,这意味着它需要所有的变量转换为字符串TSQL过程。而不是逐个案例陈述,是否有更容易做到这一点,它包含所有案件,并强制任何类型的字符串类型?tsql:将变量转换为字符串类型的最佳方式?

在此先感谢

回答

25

全部大写的是文字文本,小写的东西进入你应该插值:

CAST(expression AS CHAR) 
-- or: 
CAST(expression AS VARCHAR) 

您可以选择指定的长度。

不幸的是,如果您想以任何与默认表示不同的方式对日期时间进行格式化,这会更困难。

我的信息来自于MSDN site。我认为你必须仔细阅读该网站和其他网站,并仔细研究一下,但希望CAST函数将是一个好的开始。

祝你好运!

0

我不认为有 - 如果有的话,我不相信它,因为很可能是在整体的格式很难控制。建立你自己的,它会看起来完全一样。因素考虑:

  • 日期格式
  • 数字,前导零,小数,+/-迹象
  • 线长度,自动换行
  • 前导空格,尾随空格,空格的字符串之间,唐”吨有开头或结尾空格

...它的推移和。

1

你需要转换/施放它每次。我做了使用功能:

CREATE FUNCTION QuoteNull 
(
    @InputStr  varchar(8000) --value to force to string 
) 
RETURNS 
varchar(8000) 
AS 

BEGIN 
    RETURN COALESCE(''''[email protected]+'''','null') 
END 

它把围绕价值或者只是单词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