【问题标题】:Oracle select mutual sub stringoracle选择相互子串
【发布时间】:2020-10-26 11:44:09
【问题描述】:

我想在 ORACLE 中返回新表,其中所有行 将“col”列中的值相同分组在一起 并且“描述”列将仅包含相互子字符串 当不同的字符将被'...'替换时

我该怎么做?请问我可以得到你的帮助吗?

开始的基本代码: 选择列,描述 从表 按列分组;

示例 1:

col description
1   Today is 
1   Today is a good day
1   Today is perfect day
2   Hello world
2   Hello

结果:

col description
1   Today is …
2   Hello…

示例 2:

col description
1   Today is a good day
1   Today is perfect day
2   Hello world
2   Hello I'm here
3   Hi

结果:

col description
1   Today is …
2   Hello…
3   Hi

谢谢!

【问题讨论】:

  • 那么你想找到最长的公共子串吗?你能说出这里的逻辑吗?
  • 您会如何处理“今天是向世界说 Hello World 的好日子?” :-)
  • 嗨,蒂姆,是的。我想找到最长的。
  • 嗨,托尼,我想从第一个字母开始查看字符串。所以如果我有字符串:“今天是说 Hello World 的好日子”我想返回“今天是..”

标签: sql regex oracle group-by substring


【解决方案1】:

这回答了问题的原始版本。

你可以使用not exists:

select col, description || ' ...'
from t
where not exists (select 1
                  from t t2
                  where t2.description like t.description || '%' and
                        t2.descriptoin <> t.description
                 );

注意,在一张大桌子上,这不会有效率!

【讨论】:

  • 谢谢林诺夫。你能看看我的第二个例子吗?
  • @MaayanPaz-Chen 。 . .这回答了问题的原始版本。你改变了问题。 . .你应该问一个新的问题,而不是让这个答案无效。
  • 对不起,我选择了不好的例子。这是指向新问题的链接:stackoverflow.com/questions/62756449/…
猜你喜欢
  • 1970-01-01
  • 2015-06-16
  • 2016-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
相关资源
最近更新 更多