Sql server 2005 tsql:将变量强制转换为字符串类型的最佳方法?

Sql server 2005 tsql:将变量强制转换为字符串类型的最佳方法?,sql-server-2005,tsql,Sql Server 2005,Tsql,我编写了一个tsql过程,将字符串插入到文本文件中,这意味着它需要将所有变量转换为字符串。是否有一种更容易做到的方法来代替使用逐例语句,它包含所有的案例并强制将任何类型转换为字符串类型 提前感谢所有大写字母均为文字,小写字母应插入一个值: CAST(expression AS CHAR) -- or: CAST(expression AS VARCHAR) 可以选择指定长度 不幸的是,如果您想以任何不同于默认表示的方式格式化datetimes,则使用datetimes会有点困难 我的信息来自网

我编写了一个tsql过程,将字符串插入到文本文件中,这意味着它需要将所有变量转换为字符串。是否有一种更容易做到的方法来代替使用逐例语句,它包含所有的案例并强制将任何类型转换为字符串类型


提前感谢

所有大写字母均为文字,小写字母应插入一个值:

CAST(expression AS CHAR)
-- or:
CAST(expression AS VARCHAR)
可以选择指定长度

不幸的是,如果您想以任何不同于默认表示的方式格式化datetimes,则使用datetimes会有点困难

我的信息来自网络。我认为你必须仔细阅读该网站和其他网站,并对其进行一些操作,但希望
CAST
功能将是一个良好的开端

祝你好运

我认为没有——如果有,我也不会相信,因为可能对整个格式的控制非常有限。建造你自己的,它会看起来完全像它需要的样子。需要考虑的因素:

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

…它不停地播放。

您每次都需要转换/播放它。我制作了一个函数来使用:

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