【发布时间】:2018-06-13 01:32:48
【问题描述】:
我有一个包含 3 列和 15565 个观察值的数据集。其中一列在同一行中有多个单词。
我要做的是从每一行中提取一个特定的单词并将其附加到一个新列中(我总共有 4 个列)
问题是我要找的词不一样,而且它们并不总是在同一个位置。
这是我的 DS 的摘录:
x y z
-----------------------------------------------------------------------
1 T 3C00652722 (T558799A)
2 T NA >> MSP: T0578836A & 3C03024632
3 T T0579010A, 3C03051500, EAET03051496
4 U T0023231A > MSP: T0577506A & 3C02808556
8 U (T561041A C72/59460)>POPMigr.T576447A,C72/221816*3C00721502
我希望提取所有以 3C 开头并且长度为 10 个字符的单词,然后将其附加到一个新的列中,因此它看起来像这样:
x y z Ref
----------------------------------------------------------------
1 T 3C00652722 (T558799A) 3C00652722
2 T NA >> MSP: T0578836A & 3C03024632 3C03024632
3 T T0579010A, 3C03051500, EAET03051496 3C03051500
4 U T0023231A > MSP: T0577506A & 3C02808556 3C02808556
8 U >POPMigr.T576447A,C72/221816*3C00721502 3C00721502
我尝试过使用Contains、Like 和substring 方法,但它没有给我我正在寻找的结果,因为它基本上找到了具有 3C 编号但没有提取它的行,它只需复制整个单元格并粘贴在Ref 列上。
【问题讨论】:
-
分享您的尝试,为我们提供一个起点和一些需要纠正的地方。
-
不幸的是,SQL Server 没有本机正则表达式提取字符串函数,这可能是完成这项工作的最佳工具。如果需要,您可以查看自定义 UDF 的正则表达式。
-
你试过CHARINDEX吗?
标签: sql sql-server sql-server-2008 tsql ssms