将表中以不同模式开头和结尾的 1 到多个字符串连接到新字段中



我熟悉并可以访问SQL Server Mgmt工作室和Alteryx,但不需要使用循环。所以我想我可能不得不将一个用于我希望连接成新列的字符串模式。任何人都可以帮助或建议,如果使用循环有意义以及如何最好地开始。

下面的链接有一个数据示例,我希望解析"原始文本"字段,并使其看起来像我手动执行的"新文本"字段,我正在尝试自动化。我认为随着我经历的更多,会有更多的模式,但我认为开始总比什么都没有好。

我想在解析后创建的带有原始文本和新文本字段的数据

以下是我到目前为止所做的伪代码,我认为可以工作。

虽然文件结束

原始文本以以下任何模式开头的情况开始连接,并在 5 种模式中的任何一种再次开始并创建新的文本记录时结束

(模式 1:|###|

模式 2 :##:

模式 3 :##A:

模式 4 #/

模式 5 (#:

结尾为新文本字段 更新 10-21- 我得到了下面的代码,作为第一步,按冒号搜索。.

if object_id('tempdb..#LETTERS') is not null
drop table #LETTERS
SELECT *
INTO #LETTERS
FROM [dbo].[tbl_TEXT_LETTERS]
declare @LINE_counter      int
declare @max_LINE_counter  int
set @LINE_counter = 0
select @max_LINE_counter = max(LINE) from #LETTERS
while @LINE_counter <= @max_LINE_counter
--
begin
declare       @NEW_TEXT     varchar(200)

select @NEW_TEXT =
case when LETTERS.[TEXT] LIKE '%:%'
THEN LETTERS.[TEXT]
ELSE 'NOTHING'
END
FROM #LETTERS LETTERS
where line = @LINE_counter
--print @line_counter
print @NEW_TEXT
set @LINE_counter= @LINE_counter + 1
end

由于您需要许多不同的模式,REGEX 将是最简单的方法。REGEX工具设置为Tokenise并使用以下表达式拆分为行,将为您提供需要拆分的所有术语的列表。请注意:20F:与您列出的模式不匹配,所以我即兴创作

\|\d{3}\||:\d\d[A-Z]{0,1}:|\d/|(\d:

这意味着:
一个后跟 3 位数字的管道和一个管道 - \|\d{3}\|
或 - |
冒号后跟 2 位数字和 0 或 1 个大写字母,然后是冒号 - :\d\d[A-Z]{0,1}:
OR - |
数字后跟正斜杠 - \d/
OR - |
括号后数字,冒号 - (\d:

获得该列表后:
查找替换:将所有这些替换为 V 形 (^(文本到列:
将 V 形拆分为新行。
示例工具:跳过 1 行
连接:按记录位置返回列表
公式:使用串联数据创建新字段。

注意:我试图在这里给出解决方案,因为它离你所在的地方还有很长的路要走。通常,在 Alteryx 社区上,您会得到一个构建的解决方案。

相关内容

  • 没有找到相关文章

最新更新