【问题标题】:How can I separate a string into columns, if I have multiple rows and the strings are of different length in SQL?如果我有多行并且 SQL 中的字符串长度不同,如何将字符串分成列?
【发布时间】:2020-06-18 04:55:48
【问题描述】:

问题说:

检索所有发布者的所有唯一国家/地区。

我应该从中检索国家/地区的列如下:

表:发布者

列:地址

行:

  • 美国新泽西州霍博肯
  • 英国伦敦
  • 纽约,纽约,美国
  • 纽约,纽约,美国
  • 纽约,纽约,美国

现在,我知道答案是要求我显示:Unites States, United Kingdom。但是,这些国家/地区在美国的情况下是由城市、州和国家组成的字符串,在英国的情况下是城市和国家/地区。

我不知道如何将列地址分成列,这样我就可以检索国家/地区的唯一值。

我尝试使用SUBSTR()和SUBSTRING(),但是我必须在里面写字符串,我不知道如何将它们全部写到一个函数中。

【问题讨论】:

  • 你可能想建议给你练习的人学习规范化,不要教他们的学生如此糟糕的设计。
  • 如果你假设这个国家总是最后一个,那么它就是最后一个 ', ' 之后的所有内容。要查找最后一次出现的内容,请先反转字符串并搜索反转的字符串。如果您对某些特定代码有困难,请务必提出这个问题,但现在我建议您阅读有关 REVERSE、LOCATE、CHAR_LENGTH 和 SUBSTRING 的教程或手册。这是一个首发:stackoverflow.com/questions/12775352/…
  • 到目前为止您尝试过什么?你被困在哪里了?
  • @NicoHaase 尝试使用 SUBSTR()、SUBTRING() 和 LOCATE() 的组合,但我必须手动编写每个字符串,然后才能获得英国或美国,但这是手动完成的。我仍然不知道如何引用地址列以将其合并到我的最终代码中以选择唯一/不同值。

标签: mysql sql string unique workbench


【解决方案1】:

您可以使用不同的 substring_index。

select distinct substring_index(Address,',',-1) from publisher;

你可以找到更多解释here

【讨论】:

    猜你喜欢
    • 2020-01-15
    • 2013-05-13
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2014-06-23
    相关资源
    最近更新 更多