2009-08-12 57 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