2012-03-15 69 views
0

我有這個數據如何存儲在SQL表中的單個列超過1項

searchterm=mobile 
frequency=43200 
catName=-1 
showNowPageSize=100 
showNowPageNumber=1 

對此我想在我SQL列保存「queryparams」

是這樣可以節省整個數據在單個列中,如果是的話如何?在SQL中這個queryparams應該是什麼,它會是varchar?

現在我得到這個異常:

數據截斷:數據太長,列 'queryparams' 在行1

感謝

+0

好吧,顯然你的列可能是類型的varchar,其長度小於你想要放入的長度。您必須將列大小設置爲「blob」類型,然後我纔會序列化您的數據。 (我不是java專家,所以我會把它留給他們) – 2012-03-15 08:15:35

回答

0

是的,但是您必須使柱子足夠寬。嘗試使用CLOB字段類型。只有這樣纔會在未來造成其他問題。

對於1:N問題(包含多個子節點的一個節點)的正確解決方案是使用外鍵。

與這些列ID, QUERY, INDEX, NAME, VALUE

INDEX是唯一必要的,如果你需要保存的查詢參數的順序創建一個表queryparamsQUERY列是外鍵:它是這些參數所屬的查詢節點的主鍵。

2

這是可能的,如果你序列將數據轉換爲字符串(例如JSON),但在我看來,這是不正確的,請使用數據庫的功能並將數據分隔到不同的列(它應該在大多數情況下工作)

0

爲什麼不把它作爲查詢字符串存儲在這種情況下。

"searchterm=mobile&frequency=43200&catName=-1&showNowPageSize=100&showNowPageNumber=1" 

只需將其存儲在正常的varchar列中即可。但是,如果您需要基於這些值中的任何值進行查詢,或者它們對於分析或數據挖掘目的有重要意義,則應將參數標準化爲離散列或名稱/值對錶。

0

看來你似乎已經將你的列類型聲明爲一種不符合你的目的的類型。如果你真的想做你說的話,你應該使用更長的類型。然後使用分隔符(無論您需要),某些字符或字符序列在您的數據中是不可能的。但是,我看到@Binyamin Sharet,列並不意味着在一列中放置任何你認爲是好的東西,你應該更好地使用幾列來獲取多個信息。越清潔越好,乾淨的設計提供了更好的改進機會和特徵......即使它似乎與生產性和資本主義的短期方法不相容。

0

您可以製作一個對象/結構體並將其序列化爲Blob字段。

相關問題