【问题标题】:MYSQL Query to replace a section of a stringMYSQL查询替换字符串的一部分
【发布时间】:2013-11-22 06:43:48
【问题描述】:

我有大量的职位以下列格式保存在数据库中

例子:

[32.306,[7195.4,9414.24,0.005]]
[219.184,[7197.41,9416.66,-0.003]]
[161.215,[1170.26,4852.79,3.815e-04]]
[37.338,[479.163,3757.15,-0.005]]
[11.719,[12436.5,4780.36,-9.46e-04]]

坐标格式为[DIRECTION,[X,Y,Z]]

我想用 0 替换所有 Z 坐标。一直在努力寻找在 SQL 查询中执行此操作的正确方法。

【问题讨论】:

  • 这是一个糟糕的表格设计示例。每个值都应该有不同的列。
  • 这不是我的应用程序(对于那些感兴趣的人来说,它是 DayZ 游戏)不幸的是,数据库设计不是我可以控制的,但我肯定同意你的看法。

标签: mysql sql string replace substring


【解决方案1】:

查询:

SQLFIDDLEExample

CONCAT(SUBSTRING_INDEX(col,',',3), ',0]]') col

结果:

|                           COL |
|-------------------------------|
|   [32.306,[7195.4,9414.24,0]] |
| [219.184,[7197.41,9416.66,0]] |
| [161.215,[1170.26,4852.79,0]] |
|  [37.338,[479.163,3757.15,0]] |
|  [11.719,[12436.5,4780.36,0]] |

【讨论】:

  • 非常感谢先生 :)
【解决方案2】:

我会使用 SUBSTRING 将您的字符串字段切碎并将值转换为浮点数并将它们存储在 4 个不同的字段(方向、x、y 和 z)中。 然后您可以轻松更新 Z 值(以及任何其他值)

当您需要更复杂的字符串表示时,只需将 4 个字段转换回 varchar 即可。

【讨论】:

  • 不幸的是,字符串需要以相关应用程序的格式存储。除非您只是暂时进行更新....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-15
  • 2012-07-23
  • 2022-07-18
  • 2014-02-22
  • 2018-12-18
相关资源
最近更新 更多