如何在视图中将 ntext 字段显示为长字符串?

Posted

技术标签:

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

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

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

有没有办法做到这一点?

我们使用的是 SQL Server 2005。

谢谢 费德里科

【问题讨论】:

如何导出? bcp? osql? NTEXT 在 SQL Server 2005 中已弃用 - 您应该改用 NVARCHAR(MAX)。额外的好处:您现在可以在这些列上使用常规字符串函数 【参考方案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。

以上是关于如何在视图中将 ntext 字段显示为长字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中将数据从字符串转换为长整数

如何计算访问查询中 SQL Server ntext(即备忘录)字段中的字符数?

如何在一个视图中将一个 UIPickerView 用于多个文本字段?

如何在 ASP.NET MVC 视图中将主键转换为实际名称/描述符字段

sql server 2000 ntext 字段对应oracle那个字段?

phpMyAdmin 在表格视图中将 varchar 字段显示为单独的十六进制值