我有这个数据
searchterm=mobile
frequency=43200
catName=-1
showNowPageSize=100
showNowPageNumber=1
我想在我的SQL专栏“queryparams”中保存
这可以将整个数据保存在一个列中,如果是,如何?在SQL中这个查询参数应该是什么,它会是varchar吗?
现在我得到了这个例外:
数据截断:第1行的列'queryparams'数据太长了
感谢
答案 0 :(得分:2)
如果您将数据序列化为字符串(例如,JSON),但在我看来这是不正确的,可以使用数据库的强大功能并将数据分成不同的列(它应该可以在大多数情况下使用时间)
答案 1 :(得分:0)
在这种情况下,为什么不将它存储为查询字符串。
"searchterm=mobile&frequency=43200&catName=-1&showNowPageSize=100&showNowPageNumber=1"
只需将其存储在普通的varchar列中即可。
但是,如果您需要根据任何这些值进行查询,或者它们对分析或数据挖掘有重要意义,则应将参数规范化为离散列或名称/值对表。
答案 2 :(得分:0)
您似乎已将列类型声明为不足以满足您目的的类型。如果你真的想做你解释的,你应该使用更长的类型。然后使用您想要的分隔符,数据中无法使用的某些字符或字符序列。
然而,我认为@Binyamin Sharet,列并不意味着在一个专栏中你认为是好的,你应该更好地使用几个列来获得几个信息。清洁器越好越好,干净的设计提供了更好的改进机会和功能......即使它似乎与生产主义和资本主义的短期方法完全不相容。
答案 3 :(得分:0)
您可以从中创建一个对象/结构并将其序列化为Blob字段。
答案 4 :(得分:0)
是的,但您必须使列足够宽。请尝试使用CLOB
字段类型。只有这将在未来引起其他问题。
1:N问题的正确解决方案(一个有多个孩子的节点)是使用外键。
使用这些列queryparams
ID, QUERY, INDEX, NAME, VALUE
只有在需要保留查询参数的顺序时才需要INDEX
。 QUERY
列是外键:它是这些参数所属的查询节点的主键。