【问题标题】:How can I display an ntext field as a long string in a view?如何在视图中将 ntext 字段显示为长字符串?
【发布时间】:2011-11-15 13:25:13
【问题描述】:

我们有一个使用 SQL 视图来生成报告的系统。这将导出为 CSV。

我正在处理一个表格,其中一个字段是 ntext,在这个字段中我们存储了一些 HTML 代码。这是我们从在线系统发送的电子邮件日志。由于我们导出为 CSV,因此这个带有断线的字段给我正确显示报告带来了一些麻烦。所以我想我需要将它作为长字符串显示在视图上。

有没有办法做到这一点?

我们使用的是 SQL Server 2005。

谢谢 费德里科

【问题讨论】:

  • 如何导出? bcp? osql?
  • NTEXT 在 SQL Server 2005 中已弃用 - 您应该改用 NVARCHAR(MAX)。额外的好处:您现在可以在这些列上使用常规字符串函数

标签: sql string sql-server-2005 view ntext


【解决方案1】:

最好的方法。由于您永远不应该使用文本字段,因此您应该将您的列更改为 nvarchar(max)。

alter table yourtable ALTER COLUMN yourcolumn nvarchar(max)

另类

CAST(你的列作为 NVARCHAR(MAX))

【讨论】:

  • 我知道这是最好的方法。但是有些行有超过 3 万个字符,所以目前我们不认为这是一种选择。
  • @Federico Giust:NVARCHAR(MAX) 是 2GB 字节。 MAX 很重要
  • @FedericoGiust 不仅是一种选择,而且当 NTEXT 被弃用时,它也将成为一种必需品。你真的应该像描述的那样把它改成 nvarchar。
【解决方案2】:
select replace(text, "\n\r", " ") from yourTable

ntext 应隐式转换为 varchar。

【讨论】:

  • 我一直在谷歌搜索,似乎无法在下一个字段上使用替换。 :(
  • replace 可以与 char 类型或二进制类型一起使用。但是在调用替换时,ntext 会自动转换为 varchar,它应该可以工作。虽然我手头没有sql server,但我没有尝试。无论如何,您都可以将 ntext 转换为 varchar。
  • @Phil OP 可能会更好地转换为 Nvarchar,因为它是 Ntext。
猜你喜欢
  • 2013-11-27
  • 2020-09-13
  • 1970-01-01
  • 2018-03-27
  • 2014-09-20
  • 1970-01-01
  • 2021-10-09
相关资源
最近更新 更多