如何从包含多个值(用逗号分隔)的Sql列中查询特定值?
下面的表表示一个sql数据库,其中有两个列,名为student和results。结果列包含两个逗号分隔的值。如何在Sql查询中选择“百分比”?
Student | Results
Student 1 | "marks": 12, "percentage"=2
Student 2 | "marks": 32, "percentage"=5
Student 3 | "marks": 52, "percentage"=9如果您能处理像上面这样的医学院学生网站的数据集,请使用dm。
发布于 2022-04-22 19:42:19
如果您不以结构化的方式对结构化世界进行建模,那么您还可以使用datadog、splunk或其他一些不需要太多结构的工具。
数据库中存在着数量众多、结构相似的东西。Chris可以说是一个关系数据库。我同意他的看法。而且,由于我的大部分经验都是使用Oracle RDBMS,所以我的示例将适用于该RDBMS。
您似乎有一个名为STUDENT_GRADE的表,它有三列:
如果可以从分数派生,则不希望使用年级列。但是,您的示例数据似乎不允许这样的派生。所以你可能要储存等级。
如果不对数据进行规范化,则必须依赖于符合某些标准的应用程序,以便可以扫描列中格式化的文本。
select regexp_replace(RESULTS, '.*"percentage" *= *([[:digit:]]+)', '\1')
from STUDENT_GRADE
where STUDENT = 'Student 1'如果有人决定要添加或删除带有结果列的信息或标签,那么您就更有可能修改更多使用此表的代码。而证明正确性则更加困难。
如果您确实将数据规范化,那么您可以编写更简单的SQL语句来对数据进行CRUD处理:
select GRADE
from STUDENT_GRADE
where STUDENT_ID = 1在一个良好的数据模型中对数据进行规范化意味着在引入更改时要做的工作更少,而且更容易证明代码遵守了新的规范。
https://stackoverflow.com/questions/71973590
复制相似问题