【问题标题】:MySql Update Query is Deleting RowsMySql 更新查询正在删除行
【发布时间】:2021-04-23 10:49:05
【问题描述】:

我正在尝试使用查询更新行(从列 str_column 中删除连字符和连字符后的所有字符) -

UPDATE table_name
SET str_column = SUBSTRING(str_column, 0, LENGTH(str_column) - 2)
WHERE str_column = '561279-1';

但上面的查询是删除匹配的行而不是更新。

看不懂,更新查询怎么删除行??

【问题讨论】:

  • 此查询从表中选择行。它不会删除,也不会更新任何内容。
  • 抱歉添加了错误的查询

标签: mysql sql-update sql-delete aws-aurora-serverless


【解决方案1】:

子字符串必须以 1 开头,而不是 0

manual中有明确说明

pos 的值为 0 返回一个空字符串。

示例:

CREATE tABLE table_name (str_column varchar(20))
INSERT INTO table_name VALUES ('561279-1')
UPDATE table_name
SET str_column = SUBSTRING(str_column, 1, LENGTH(str_column) - 2)
WHERE str_column = '561279-1';
SELECT * FROM table_name
| str_column | | :--------- | | 561279 |

db小提琴here

【讨论】:

  • 我知道了,但是如果我使用从 0 索引开始的 SUBSTRING 函数,那么 str_column 应该设置为 null(或空字符串)而不是删除行。对吗??
  • 它返回一个空字符串。我用链接添加了该信息,不要忘记acceüt it
猜你喜欢
  • 1970-01-01
  • 2019-07-16
  • 2014-11-07
  • 2012-09-01
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 2015-02-02
  • 2014-09-23
相关资源
最近更新 更多