MySQL函数替换列中的逗号分隔值

Posted

技术标签:

【中文标题】MySQL函数替换列中的逗号分隔值【英文标题】:MySQL function to replace comma separated values in column 【发布时间】:2014-06-12 08:27:14 【问题描述】:

我有一列有逗号分隔的值(ID)。我需要为它们更改相应的值。我需要 mysql 函数来替换。

这是我的桌子1。

id             name
-------------------
1              Lara

2              Smith

3              Antony

4              Ken

这是我的桌子2

id            friends
---------------------

1             2,3

2             1,2

3             1,3

4             1,4,3,2

当我查询 table2 时,我的 MySQL 函数 (get_names) 应该返回以逗号分隔的名称,而不是 name'ids。

例如

当我这样打电话时

select get_names('1,2,3,4','Lara,Smith,Antony,Ken','3,1'); 

它应该返回Antony,Lara

这里

我的

1st parameter is - total user ids with comma separated order

2nd parameter is - total user name with comma separated order (same order like user ids)

3rd parameter is - any no. of user ids with comma separated any order

请帮帮我。

【问题讨论】:

2 个问题 - 1. 您的实际数据中有多少个 id-name 对? 2. 可以在应用代码中做这个替换操作吗? @shree.pat18 回答。 1. 仅 100-500 条数据 2. 我在应用程序中无法做到。 【参考方案1】:

我建议更改表 2,这样您就不会有逗号分隔的值:

id            friends
---------------------

1             2
1             3

2             1
2             2

3             1
3             3

4             1
4             4
4             3
4             2

在这种情况下,您还必须更改 MySQL 函数,但使用简单的连接检索值会更容易。

【讨论】:

嗨。我将增加表中的行数,而且当我在单行中显示此表时会非常困难 @SathishBabu 绝对的废话 @Strawberry 你建议我使用上述概念吗? 是的。请参阅规范化 - 尽管上面示例中的 id 列有点不寻常。简单地存储朋友对更为常见。【参考方案2】:

mysql 中的逗号分隔值违反了 1st NF

【讨论】:

以上是关于MySQL函数替换列中的逗号分隔值的主要内容,如果未能解决你的问题,请参考以下文章

mysql 字段内容是用逗号分隔的。怎么按序列查询内容

MYSQL列中的数据以逗号隔开,如何查询?

如何将不同的逗号分隔值插入mysql中的不同列

MYSQL列中的数据以逗号隔开,如何查询?

mysql中将一列以逗号分隔的值分割成多列显示?

从mysql的逗号分隔文本列中查找不同的值[重复]