比较2个文本列并使用sql在第三个单元格中显示差异

石膏

我正在尝试比较2列,例如,我必须得到唯一的区别

select * from table1

Column_1                column_2
----------------        ------------------
Swetha working          Swetha is working in Chennai
Raju 10th               Raju is studying 10th std
ranjith                 Ranjith played yesterday
how to play             how to play Cricket
My name is              my name is john

输出:

如果中间有单词,也应该像第1行和第2行一样删除

Column_1                column_2                         column_3
----------------        ------------------               ------------------------
Swetha working          Swetha is working in Chennai     is in Chennai
Raju 10th               Raju is studying 10th std        is studying std
ranjith                 Ranjith played yesterday         played yesterday
how to play             how to play Cricket              Cricket
My name is              my name is john                  john
戈登·利诺夫

这比您先前的问题要复杂得多。您可以将第一列分解为单词,然后在第二列中分别替换它们。但是,为此,您需要递归CTE:

with words as (
      select t.*, s.*,
             max(s.seqnum) over (partition by t.id) as max_seqnum
      from t cross apply
           (select s.value as word,
                   row_number() over (order by (select null)) as seqnum
            from string_split(col1, ' ') s
           ) s
     ),
     cte as (
      select id, col1, col2,
             replace(' ' + col2 + ' ', ' ' + word + ' ', ' ') as result,
             word, seqnum, max_seqnum
      from words
      where seqnum = 1
      union all
      select cte.id, cte.col1, cte.col2,
             replace(cte.result, ' ' + w.word + ' ', ' '),
             w.word, w.seqnum, cte.max_seqnum
      from cte join
           words w
           on w.id = cte.id and w.seqnum = cte.seqnum + 1
     )
select id, col1, col2, ltrim(rtrim(result)) as result
from cte
where max_seqnum = seqnum
order by id;

是db <>小提琴。

我添加了一个,id因此每一行都是唯一定义的。如果您的SQL Server版本不具有内置string_split()功能,则可以轻松找到具有相同功能的版本。

这使用的一个技巧是处理第二列中的第一个和最后一个单词。该代码在开头和结尾添加空格。这样,字符串中的所有单词都被空格包围,从而更容易替换完整的单词。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果两个单元格匹配,则从第三个单元格返回值

VLOOKUP的FOR循环在两个单元格中返回值并打印第三个单元格

如何比较表格的两列并显示第三个输出?

如何将我的第三个可见单元格定义为B列中的变量

使用2个数组在numpy中填充第三个数组

可安装在可在一个单元格上触发,从另一个单元格获取数据并在第三个单元格中写入数据的Edit触发器上

Excel连接第三个单元格中列出的单元格中的字符串

使用Java中的第三个变量交换

Excel VBA-如何基于两个单元格值添加行数并从第三个单元格复制/保留数据?

Excel公式,如果相邻单元格的值等于第三个单元格的值,则将一行中的所有条目相加

来自2个ComboBox的类别影响使用SQL的datagridview的第三个Combobox

SQL查询以比较2个表中的值并显示第二个表中的第三个值

需要一个公式来将一个常数单元格与其他单元格进行比较,并从第三个单元格返回一个值

如果在Excel中填充了2个单元格,则减去第三个单元格,否则返回两个单元格之一中的值

.net 4.0比较2个列表并返回第三个列表中的差异

EXCEL:SUM =总计,减去其他单元格,如果第三个单元格中的值=“特定文本”

匹配2个csv文件并写入第二个文件的第三个单元格

UITableView第二和第三个标签在单元格中不显示值

在第三个文本框中显示两个文本框文本

不会显示 LinearLayout 中的第三个 RecyclerView

Google Sheets - 如果多个单元格匹配 THEN 将第三个单元格复制到第四个单元格

将多个文本框合并到一个单元格中,如果第二个,第三个没有值,如何...文本框然后继续代码

如果单元格值在列表中,则替换为第三个值

使用批处理脚本递归比较2个文件夹的内容,并将差异复制到第三个文件夹

如何比较两个 csv 文件中的特定列并将差异输出到第三个文件

两个如何使用 jQuery 在第三个中显示两列总数

将我的 HTML 表格中的两个单元格相乘,并使用 javascript 自动将结果放在第三个单元格中。没有 Jquery

从 Col B 不为空的同一行下复制第三个单元格

使用 VLOOKUP 将 2 个单元格 sheet2 匹配到 sheet1 并返回第三个单元格