【问题标题】:how to fetch data between 'pie' or 'vertical bar' | in database using java?如何在“饼图”或“竖线”之间获取数据 |在使用java的数据库中?
【发布时间】:2015-12-21 14:40:55
【问题描述】:

在数据库中的mapRule列包含

  1. IFA 211974009 |脚趾深度部分厚度烧伤(疾病)|
  2. IFA 28571002 |脚趾二度烧伤(疾病)|
  3. IFA 211968009 |足部浅表部分厚度烧伤(障碍)|

所需的输出介于 |符号饼图或竖线

  1. 脚趾部分深度烧伤(疾病)
  2. 脚趾二度烧伤(障碍)
  3. 足部浅表部分厚度烧伤(障碍)

如何获得这个?我正在从 mysql 获取数据我的代码是

代码

<%
    pstm = Con.prepareStatement(selectsql);
    pstm.setString(1, snomedid);
    resultSet = pstm.executeQuery();
    while (resultSet.next()) { %>
        <p><%=resultSet.getString("mapRule")%></p>
    <% } %>

在这种情况下如何验证。?

【问题讨论】:

  • 这看起来像是一个设计很糟糕的数据库。
  • 是的!在这种情况下如何删除重复项@Mark Rotteveel

标签: java string validation jsp jdbc


【解决方案1】:

例如,使用String.split。它使用正则表达式作为分隔符将您的字符串拆分为更小的块数组。

<%
pstm = Con.prepareStatement(selectsql);
pstm.setString(1, snomedid);
resultSet = pstm.executeQuery();
while (resultSet.next()) { 
  String[] chunks = resultSet.getString("mapRule").split("\\|");
  if(chunks.length > 1) { //Don't forget to check that string after first "|" even exists!
%>
        <p><%=chunks[1]%></p>
    <% }
} %>

此外,检查resultSet.getString("mapRule") == null 是否在您的输入数据中可能是个好主意。

附:它被称为pipe 字符,而不是pie

【讨论】:

  • 非常感谢,它工作正常,我想现在它不需要了,下次我会纠正它@Timekiller的错误
  • 在这种情况下如何避免重复行。我得到重复的行
  • 更改您的 sql 查询,使用 distinct 作为初学者。如果仍然存在重复,则可能需要直接在 SQL 中剪切 | 之间的字符串 - 可以使用正则表达式或 instrsubstr。你没有提到你使用什么 DBMS,所以很难说什么会更好用。查看如何在 SQL 中使用分隔符拆分字符串,StackOverflow 上有很多相关答案。
  • 我正在使用 mysql 。而且我不能直接区分,因为在我的情况下,我只使用一个选择查询,其中 id ,即根据选择一一获取数据。所以现在我很困惑
  • 嗯,你是什么意思,你不能使用 distinct? select distinct mapRule from ....。如果失败,请使用 select distinct substring_index(substring_index(mapRule, '|', 2), '|', -1) from ... - 这将直接在 mysql 中删除 | 之间的值并过滤掉重复项。如果您使用后者,则在 Java 中不需要 split
猜你喜欢
  • 2021-09-28
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多