我们的数据库中有一个药物专栏,其中包含药物名称(例如Xanax)及其大小(0.5mg)。
E.g。药物名称:Xanax 0.5mg
但是,我们需要将两个数据分开而不创建大小的新列,因为这样做会对数据库结构产生巨大影响。我们只需要使用药物名称填充列表,而不是基于此单个字段/列的大小。
有没有办法只提取药物的名称?让我们说迫使用户在药物大小周围添加一个括号(例如Xanax(0.5mg))?意思是只提取第一个“(”字符?
之前的所有字符串或者有更好的方法吗?
答案 0 :(得分:1)
试试这个:
<强> mytable的:强>
id name
1 Xanax (0.5mg)
<强>查询:强>
select id, substring_index(name,'(',1) from tb_mx;
将返回:
1, Xanax
因此请相应地使用它。
答案 1 :(得分:0)
您可以以JSON格式存储药物数据
{"some_unique_id":{
"name": "Xanax",
"quantity": "0.5mg"
}}
然后使用Functions That Search JSON Values获取MySQL 5.7以获取所需的参数。
答案 2 :(得分:0)
我对制药行业中使用的DB有一些经验,我可以说这样做不行。
以下是我认为你必须做的事情(规范化)
表UM(如mg,ml等) 表包装(如每个pice的数量,pice nr,FK ID_UM) 表药物(名称,fk id_packing)
不要担心太空。表UM和Packing将有很多重用ID,而int int比varchar少。
或者可以使用JSON ideea,但是在报告部分时会遇到一些问题。