【问题标题】:Is there a way to separate data from one field in mySQL?有没有办法将数据与 mySQL 中的一个字段分开?
【发布时间】:2017-01-13 08:31:47
【问题描述】:

我们的数据库中有一个药物列,其中包含药物名称(例如 Xanax)及其大小(0.5mg)。

例如药品名称:Xanax 0.5mg

但是,我们需要在不为大小创建新列的情况下分离两个数据,因为这样做会对数据库结构产生巨大影响。我们只需要根据这个单个字段/列填充一个仅包含药物名称而不包含其大小的列表。

有没有办法只提取药物的名称?假设通过强制用户在药物大小周围添加括号(例如 Xanax(0.5mg))?意思是只提取第一个“(”字符之前的所有字符串?

或者有没有更好的方法?

【问题讨论】:

    标签: mysql database data-structures


    【解决方案1】:

    试试这个:

    我的表:

    id  name
    1   Xanax (0.5mg)
    

    查询:

    select id, substring_index(name,'(',1) from tb_mx;
    

    将返回:

    1, Xanax
    

    所以相应地使用它。

    【讨论】:

      【解决方案2】:

      您可以以 JSON 格式存储药物数据

      {"some_unique_id":{
          "name": "Xanax",
          "quantity": "0.5mg"
      }}
      

      然后使用Functions That Search JSON Values for MySQL 5.7 来获取你需要的参数。

      【讨论】:

        【解决方案3】:

        我对制药行业使用的 DB 有一些经验,我可以说这样做是不行的。

        这是我认为你必须做的(规范化)

        表 UM(如 mg、ml 等) 餐桌包装(如每份数量、每份数量、FK ID_UM) 表药物(名称,fk id_packing)

        不用担心空间问题。表 UM 和 Packing 会有很多重复使用的 ID,而 int 列占用的 ID 比 varchar 少。

        或者可以使用JSON ideea,但是在报告部分会出现一些问题。

        【讨论】:

        • 为什么你认为这样做不好?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-27
        • 1970-01-01
        • 1970-01-01
        • 2012-01-10
        • 1970-01-01
        • 1970-01-01
        • 2020-05-10
        相关资源
        最近更新 更多