【问题标题】:SQL, JAVA Remove Duplicate Strings from SQL output, Array SortSQL,JAVA 从 SQL 输出中删除重复字符串,数组排序
【发布时间】:2017-03-15 22:18:15
【问题描述】:

我正在访问一个 SQL 数据库,我想检索一列中的所有序列号,我的问题不在这里,我的问题是 sql 语句带来了所有序列号,无论其是否重复。

这是我的 SQL 语句;

String sqlS = "Select (SerialNumber) from dbo.Results where ErrorCode != 0 AND LineNumber = 1 AND TMDT BETWEEN '" +ourJavaDateObject + "' AND '" + tomorrow + "'";

这是输出:

16110201009
16110201014
16110201017
16110201048
16110201048
16110201048
16110201048
16110201048
16110201048

请注意,有 6 个相同的序列号,如何排序才能删除序列号。

这是我想要的输出:

16110201009
16110201014
16110201017
16110201048

【问题讨论】:

  • 使用 DISTINCT 关键字。转到此链接tutorialspoint.com/sql/sql-distinct-keyword.htm
  • Select distinct SerialNumber from dbo.Results ...(不相关,但是:在括号之间放置一列或一列列表完全没用)
  • 另外:请停止将值连接到 SQL 字符串中。使用带有占位符的PreparedStatement
  • 我使用了 distinct,它有效,您的解决方案有效,非常感谢。
  • @aridi 看起来你在做这个之前没有读过数据库。

标签: java sql arrays sorting duplicates


【解决方案1】:

要获得唯一值,您需要使用关键字DISTINCT

String sqlS = "SELECT DISTINCT (SerialNumber) FROM dbo.Results WHERE ErrorCode != 0 AND LineNumber = 1 AND TMDT BETWEEN '" +ourJavaDateObject + "' AND '" + tomorrow + "'";

但是,您的代码对SQL injection 并不安全,因为您直接解析参数。你会考虑使用PreparedStatement吗?

【讨论】:

    【解决方案2】:
    "Select distinct (SerialNumber) from dbo.Results where ErrorCode != 0 AND LineNumber = 1 AND TMDT BETWEEN '" + ourJavaDateObject + "' AND '" + tomorrow + "'"
    

    【讨论】:

    • 没有解释的回答不是答案。
    猜你喜欢
    • 2013-08-30
    • 2013-11-05
    • 1970-01-01
    • 2019-12-22
    • 2017-08-01
    • 2020-06-09
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    相关资源
    最近更新 更多