2
我有一个逗号分隔列表,即时存储在一个MySQL表中的varchar字段。MYSQL逗号分隔列表,可能添加和删除值?
是否可以直接使用sql查询从列表中添加和删除值?或者我必须从数据表中取出数据,在PHP中操作并将其替换回mysql?
我有一个逗号分隔列表,即时存储在一个MySQL表中的varchar字段。MYSQL逗号分隔列表,可能添加和删除值?
是否可以直接使用sql查询从列表中添加和删除值?或者我必须从数据表中取出数据,在PHP中操作并将其替换回mysql?
在MySQL中InnoDB和MyIsam引擎没有办法做到这一点。可能在其他引擎(检查CSV引擎)。
您可以在存储过程中执行此操作,但不建议。
你应该做些什么来解决这样一个问题,就是重构你的代码和规范你的DB =>
原始表
T1: id | data | some_other_data
1 | gg,jj,ss,ee,tt,hh | abanibi
要成为:
T1: id | some_other_data
1 | abanibi
T2: id | t1_id | data_piece
1 | 1 | gg
2 | 1 | jj
3 | 1 | ss
4 | 1 | ee
5 | 1 | tt
6 | 1 | hh
,如果data_piece是一个恒定值在很多重用的系统中,您还需要添加一个查找表。
我知道它看起来更多的工作,但它会为您节省像现在这样的问题,这需要更多的时间来解决。
现在你明白为什么规范化很重要。 –
你在做什么 - 你想在SQL中编写自己的小数据库吗? –
你能更具体地说明你如何试图操纵这个字符串吗?你确定你需要将一个字符串存储到这个表中吗?这是非常糟糕的做法,除非你正在做一些事情,比如预先计算你无法实时为用户做的事情。 –