gpt4 book ai didi

mysql - 从 *varchar* 单元格中提取数字并在纯 mysql 中使用它们进行数学运算

转载 作者:行者123 更新时间:2023-11-29 08:36:22 24 4
gpt4 key购买 nike

是否可以从 varchar 单元格中提取数字,用它们进行数学计算并用结果更新单元格?

  • 列中的某个单元格的值为“24a10 b”

  • 取 24、10 并注意 b

  • 做24*10 = 240

  • 如果有 b,则减 1

  • 在该字段中存储 239(将“24a10 b”更改为“239”)

  • 对表中的所有行执行此操作

最佳答案

这当然可以做到,但 SQL 是围绕原子值公理设计的(即 first normal form )。分割字段几乎没有必要。在设计良好的数据库中,您唯一需要使用它的情况是您可能只想使用日期字段的月份或年份。虽然您肯定会发现某些白痴设计的数据库违反了这一核心概念,但您被迫使用这些数据库,但从尝试弄清楚如何使用这些设计开始是一个坏主意。

此外,您的最后一步“存储在单元格 239 中”让我认为您仍在像电子表格一样查看数据库。他们不是。数据库的另一个核心组件是行的顺序并不重要。另一方面,字段总是与同一行中的其他字段相关。您可以将其中一个字段的值设置为该记录的 ID 字段为 239 的值,但您通常不会关心记录是第 239 条这一事实。

也就是说,这是一个可以完成您想要的操作的查询:

假设:该字段的格式为“11a22 b”。也就是说,一个两位数数字,后跟一个字母,后跟另一个两位数数字,可能后跟一个空格和字母“b”。

SELECT CAST(SUBSTRING(Value,1,2) AS INT) 
* CAST(SUBSTRING(Value,3,2) AS INT)
+ CASE RIGHT(Value,1) WHEN 'b' THEN -1 ELSE 0 END
FROM MyTable

关于mysql - 从 *varchar* 单元格中提取数字并在纯 mysql 中使用它们进行数学运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15100190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com