mysql在数组分隔符的\u集合中查找\u

cclgggtu  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(303)

我有一个列用户订单,我们正在像这样存储

[1][2][3][5]   // Expected output 1,2,3,5
[25][27]       // Expected output 25,27
[2]            // Expected output 2

我不明白为什么我的主存储像上面的格式,而不是逗号分隔符的数据,这是出于安全原因吗?
如何将其替换为1、2、3、5以在查找集合中使用(u.id、c.user\u orders)?
我试过这样做

https://stackoverflow.com/questions/27262855/mysql-find-in-set-slash-separator
7vhp5slm

7vhp5slm1#

而不是试图改变 [1][2][3][4] 对于csv格式,更简单的方法是使用 REGEXP . 例如,如果要搜索id为3,可以使用:

SELECT *
FROM yourTable
WHERE user_orders REGEXP '[[:<:]]3[[:>:]]';

如果你真的想把数据转换成纯csv,你可以做一系列的替换,例如。

SELECT *
FROM yourTable
WHERE FIND_IN_SET('3', REPLACE(REPLACE(REPLACE(user_orders, '][', ','),
    '[', ''), ']', '')) > 0;

但一般来说,您应该避免存储 [1][2][3][4] 或者 1,2,3,4 ,因为两者都是非规范化的数据,因此大大限制了mysql的处理能力。

相关问题