2016-09-10 35 views
0

例如,我想在表格中插入类似的东西,并让它保留文本的格式属性以供以后检索:是否可以在SQL Server中存储格式化文本?

例如:

**This** is a *sentence*. 

另外,如果字母的大小发生改变,它还能工作吗?

+0

对于所有符合逻辑的爱,不要在数据库中存储HTML标签以减少HTML或CSS代码。我们中的很多人会死在里面。 – scsimon

回答

3

要存储格式,需要有某种标记。 HTML可能工作。如果这将显示在浏览器中,请清理该值以避免任何可能的安全问题。

如果使用HTML,文字存储的值可能是:

<strong>This</strong> is a <i>sentence</i> 

编辑:注意到WPF标签,其中有从HTML不同的格式标记。这个想法仍然是一样的。

<Bold>This</Bold> is a <Italic>sentence</Italic> 

编辑2:不知道为什么WPF标记被删除和“格式化”的例子在问题中改变,哈哈。堆栈溢出看起来像一个奇怪的地方。

既然它已经提出,是的,带标记的文本不是纯粹的关系数据,所以它在理论上没有关系数据库中的业务。

然而,现实中,有场景是存储格式中的另一种方法是违反直觉/昂贵的(内容管理系统与修改动态数据格式文本框浮现在脑海中)

所以,它可以被用来只要开发人员知道后果是什么,它就不会被严重和盲目地使用(在数据库而不是文件中抛出静态/永不改变的内容),并且他/她从他/她友好的邻居DBA中获得祝福。

+0

在数据库中存储HTML标签与在GUI中处理它们是一个可怕的想法。它迫使一个方形钉进入一个圆孔。这就像在全国各地逆向驾驶一辆汽车。仅仅因为它在技术上可能并不意味着它应该完成 – scsimon

+0

我同意你的意见。问题是如果这是可能的,而不是如果它应该完成。这就是为什么我提到卫生,以确保只有格式化通过。这是最直接的答案,但更强大的解决方案将是有限的自制标记(IE [b] This [/ b]是[i]句子[/ i]),所以它是专有的,并且仍然告诉UI如何正确显示它。 –

+0

虽然您引入了消毒和可能的答案,但这可能会打开一系列关于不良练习问题的答案。如果有人问如何使用基于SQL Server的循环来执行X,并且明智的选择是使用基于集的操作,则不应该提倡循环逻辑。至少应铭记,务必强调最佳实践和解决方案的性能和安全性。队友的欢呼声。 – scsimon

0

将其保存为NVARCHAR,它将保留您插入的内容。如果按照大小来表示长度不是字体大小,那么这受限于您设置的列的大小。 8000个字节是最大为NVARCHARVARCHAR其是NVARCHAR(MAX)NVARCHAR(4000)

任何可视化格式等字体类型,字体大小,颜色,强调等应该由你的前端应用来处理。记住SQL Server存储数据......这不是一个GUI。因此,存储HTML或CSS格式是很差的做法,并不是它的目的。

相关问题