我有一个包含3列的数据集,有15565个观测值。其中一列已在同一行中有多个单词。
我想要做的是从每一行中提取一个特定的单词并将其附加到一个新列(我将总共有4个cols)
问题是我正在寻找的这个词并不相同,而且它们并不总是在同一个位置。
这是我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
and开头的单词是10个字符长,然后将其附加到新的col,所以它看起来像这样:
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没有良好的字符串函数,但如果您只想每行提取一个值,这应该足够了:
select t.*,
left(stuff(col,
1,
patindex('%3C[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%', col),
''
), 10)
from t ;