SQL - 从字符串中获取特定文本

Posted

技术标签:

【中文标题】SQL - 从字符串中获取特定文本【英文标题】:SQL - get specific text from string 【发布时间】:2019-12-14 20:54:54 【问题描述】:

我有这个字符串的列:

['autre__renvoi_vers_un_mail', 'contact_type__email']
['contact_type__email', 'internal__shop', 'uk']

我只需要从字符串中获取contact_type__* 部分(每行仅出现一次)

contact_type__email
contact_type__email

有什么建议吗?

【问题讨论】:

【参考方案1】:

你可以使用regexp function regexp_extract(),比如:

regexp_extract(mycol, 'contact_type__[a-zA-Z0-9_]*')

这将匹配字符串'contact_type__,后跟一系列字母、数字或下划线(通常定义为单词字符)。

【讨论】:

@OksanaOk:欢迎!只是检查一下,如果您使用\\w 而不是\w 怎么办?【参考方案2】:

举个例子:

create table t (col varchar(100));
insert into t values
('[''autre__renvoi_vers_un_mail'', ''contact_type__email'']'),
('[''contact_type__email'', ''internal__shop'', ''uk'']');

你可以使用:

select
    substring 
    (
     col,
     charindex('contact_type', col) + 14,
     charindex('''', col, charindex('contact_type', col)) - charindex('contact_type', col) - 14
    )
from
    t;

db小提琴here

【讨论】:

以上是关于SQL - 从字符串中获取特定文本的主要内容,如果未能解决你的问题,请参考以下文章

Javascript Regex 从两个不同格式的文本块中获取特定字符串

如何在该行某处某处的某一行中的特定字符串之后从文本文件中获取一个数字?

如何从 webview 中的 json responseString 获取特定方法

如何将在从控制台获取的 URL 中找到的特定字符串替换为在 Ruby 文本文件中写入的每一行中找到的文件内容?

如何从文本 kotlin 中检索特定字符串?

搜索模式并从文本中选择特定模式