2016-09-10 71 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格式是很差的做法,並不是它的目的。

相關問題