有一个contents
包含 13 列和 1.5 到 600 万行的表。
(varchar(250), utf8_general_ci)列rel_tags
包含以逗号分隔的单元格值列表。
(例如:100 美元纸币、美元纸币、比尔考斯比、比尔密码、美元、美元符号)。
一个单元格可以包含从零(单元格可以为空)到六个以逗号分隔的值。分隔符之间的值可以包含字母、数字、空格和%#&@!。
您需要随机打乱列的每个单元格中的值rel_tags
。
例如
:100 美元钞票,dollar bill,bill cosby,bill cipher,dollar,dollar sign
变成:bill cosby, dollar sign, 100 dollar bill, bill cipher, dollar bill, dollar
这需要在将数据从 csv 文件导入 MySQL 后完成一次。
PS 在 Excel 中,以下函数帮助我完成了这项任务:
Function ShufflePhrases$(s$, delim$)
Dim arr$(), i, c%
arr = Split(s, delim)
Randomize
c = UBound(arr)
For i = 1 To c
swap arr(Rnd * c), arr(Rnd(Timer) * c)
Next
ShufflePhrases = Join(arr, delim)
End Function
Sub swap(ByRef a, ByRef b)
Dim c
c = a: a = b: b = c
End Sub
MySQL 版本 8 的解决方案。
采样洗牌:
更新:
小提琴