我有2种格式的列数据

1)"/abc/testapp/v1?FirstName=username&Lastname=test123"

2)"/abc/testapp/v1?FirstName=username"

我想将输出检索为 "/abc/testapp/v1?FirstName=username" ,并删除以“&Lastname”开头和以“”结尾的数据。其想法是删除带有其值的姓氏。
但是,如果数据不包含“&Lastname”,那么按照第二种情况,它也应该可以正常工作
示例中显示的“姓氏”的值是“test123”,但通常这是动态的

我已经从regexp_replace开始,但是我可以替换“&Lastname”,但不能替换其值。select regexp_replace("/abc/testapp/v1?FirstName=username&Lastname=test123&type=en_US","&Lastname","");有人可以在这里帮助我如何通过单个配置单元查询实现这两个目标吗?

最佳答案

使用拆分功能:

with your_data as (--Use your table instead of this example
select stack (2,
              "/abc/testapp/v1?FirstName=username&Lastname=test123",
              "/abc/testapp/v1?FirstName=username"
             ) as str
)

select split(str,'&')[0] from your_data;

结果:
_c0
/abc/testapp/v1?FirstName=username
/abc/testapp/v1?FirstName=username

或使用“&Lastname”模式进行拆分:
select split(str,'&Lastname')[0] from your_data;

除了以&Lastname开头以外,它还会允许&包含其他内容

关于sql - 单个配置单元查询以删除数据中的某些文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61516041/

10-13 07:51