【问题标题】:how to insert values from comma separator in SQL? [duplicate]如何在 SQL 中从逗号分隔符插入值? [复制]
【发布时间】:2015-12-10 20:39:18
【问题描述】:

在 sql 存储过程中我有变量

 IN `table2variables` VARCHAR(5000),

其中包含这样的值:table2variables ="88,61,35"

现在我想像这样在表中插入这些值:

INSERT into table2(id, val) values ([id],"88");
INSERT into table2(id, val) values ([id],"61");
INSERT into table2(id, val) values ([id],"35");

所以问题是我如何从该变量中获取值? INSERT 只写一句话?

【问题讨论】:

  • 将字段拆分为单个值,插入单个值。
  • 不确定,我们如何实现这一点,table2variables 可以使用逗号分隔符保存任意数量的值。
  • 如果字段中的值的数量是固定的,那么使用 substring_index() 会有所帮助。如果这个数字是动态的,那么您必须编写一个存储过程才能仅在 mysql 中执行此操作。用传统的编程语言可能更容易实现。
  • 可以给我看个例子吗?
  • @Barmar 感谢您的评论,我没有将“88,61,35”插入一行,我想将每个数字插入行。(这里将是 3 行),是创建问题?

标签: mysql sql


【解决方案1】:

您可以使用反斜杠 (\) 在值中插入逗号。反斜杠的作用类似于转义字符。这个概念与许多编程语言非常相似。

INSERT into table2(id, val) values ([id],"88\,61\,35");

更新:

UPDATE table2 
SET val = "50\,60\,90"
WHERE id = 999

【讨论】:

  • 如果我想更新这些记录怎么办?
  • 我更新了我的答案@user0293
  • 是在 javascript、php 或 sql 中将字符串 ="88,61,35" 替换为 "88\,61\,35" 的任何其他方式吗?
  • 逗号不需要在字符串中转义。
  • 这个答案与问题有什么关系。他不希望在单列中使用逗号分隔的列表。他想在存储过程中拆分字符串,并将每个元素放在单独的行中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-20
相关资源
最近更新 更多