首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可能是Sql和php?

问可能是Sql和php?
EN

Stack Overflow用户
提问于 2022-04-22 19:10:03
回答 1查看 52关注 0票数 -2

如何从包含多个值(用逗号分隔)的Sql列中查询特定值?

下面的表表示一个sql数据库,其中有两个列,名为student和results。结果列包含两个逗号分隔的值。如何在Sql查询中选择“百分比”?

代码语言:javascript
复制
Student   | Results
Student 1 | "marks": 12, "percentage"=2
Student 2 | "marks": 32, "percentage"=5
Student 3 | "marks": 52, "percentage"=9

如果您能处理像上面这样的医学院学生网站的数据集,请使用dm。

EN

回答 1

Stack Overflow用户

发布于 2022-04-22 19:42:19

如果您不以结构化的方式对结构化世界进行建模,那么您还可以使用datadog、splunk或其他一些不需要太多结构的工具。

数据库中存在着数量众多、结构相似的东西。Chris可以说是一个关系数据库。我同意他的看法。而且,由于我的大部分经验都是使用Oracle RDBMS,所以我的示例将适用于该RDBMS。

您似乎有一个名为STUDENT_GRADE的表,它有三列:

  1. STUDENT_ID not
  2. 标记编号null
  3. 品位null(百分比是一个可怕的名称)

如果可以从分数派生,则不希望使用年级列。但是,您的示例数据似乎不允许这样的派生。所以你可能要储存等级。

如果不对数据进行规范化,则必须依赖于符合某些标准的应用程序,以便可以扫描列中格式化的文本。

代码语言:javascript
复制
select regexp_replace(RESULTS, '.*"percentage" *= *([[:digit:]]+)', '\1')
  from STUDENT_GRADE
 where STUDENT = 'Student 1'

如果有人决定要添加或删除带有结果列的信息或标签,那么您就更有可能修改更多使用此表的代码。而证明正确性则更加困难。

如果您确实将数据规范化,那么您可以编写更简单的SQL语句来对数据进行CRUD处理:

代码语言:javascript
复制
select GRADE
  from STUDENT_GRADE
 where STUDENT_ID = 1

在一个良好的数据模型中对数据进行规范化意味着在引入更改时要做的工作更少,而且更容易证明代码遵守了新的规范。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71973590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档