【问题标题】:MySQL substring_index Delete Everything In Field After SpaceMySQL substring_index 在空格后删除字段中的所有内容
【发布时间】:2021-06-09 23:24:23
【问题描述】:

我有一个名为 subscribers 的表,其名称字段包含如下数据:

汤姆·琼斯

德鲁·布雷斯

汤姆·布雷迪三世

我需要删除每条记录的第一个空格之后的所有内容,使其看起来像:

汤姆

画了

汤姆

Using this question,我组装了以下查询:

从订阅者中选择 substring_index(name,' ',1) 作为 deleteAllAfterSpace

我收到以下错误:

当前选择不包含唯一列。

当我跑步时: SELECT * FROM subscribers WHERE INSTR(name, ' ') > 0

我确实得到了我正在寻找的值。

我可以向你保证,名称列是唯一的吗?我做错了什么?

【问题讨论】:

  • 你能提供更多的上下文吗?也许DESCRIBE subscribers 输出?表中只有那 3 行吗?这有帮助吗? stackoverflow.com/questions/18922503/…
  • @richyen 在名为 id 的列上有一个主键。当我运行 SELECT * FROM subscribers WHERE INSTR(name, ' ') > 0 时,我得到了我正在寻找的记录。
  • 我认为这是您使用的网格视图客户端的错误。它希望每一行都有一些可以唯一标识给定行的列。但是您要返回的一列有重复项。也许您正在使用 phpMyAdmin?
  • 你没有选择你是 uzpdatein 并且 name 是唯一的或主键,所以 tom 只能出现一次
  • @BillKarwin 是的......这是我唯一的访问权限。 phpMyAdmin 有解决办法吗?

标签: mysql


【解决方案1】:
SELECT name, subString(name, 1, POSITION(' ' IN name)) as deleteAllAfterSpace 
FROM subscribers;

这就是你的全部

【讨论】:

  • 这实际上并没有对每条记录的列数据进行更改。它只显示数据。
  • 问题出在 myPHPAdmin 上,本机运行,一切正常。谢谢!
猜你喜欢
  • 2012-03-08
  • 1970-01-01
  • 2019-04-23
  • 2017-06-03
  • 2012-08-24
  • 1970-01-01
  • 2010-12-24
  • 2012-05-19
  • 1970-01-01
相关资源
最近更新 更多