SQL Postgres首先在字符串字段中的单词列表中查找单词

SQL Postgres首先在字符串字段中的单词列表中查找单词,sql,postgresql,Sql,Postgresql,我有一个简单的问题。在字符串字段中查找单词,如下所示: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.90 Safari/537.36 2345Explorer/9.2.1.17116 我希望“CHROME”行仅作为输出 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like G

我有一个简单的问题。在字符串字段中查找单词,如下所示:

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.90 Safari/537.36 2345Explorer/9.2.1.17116
我希望“CHROME”行仅作为输出

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/56.0.2924.90 Chrome/537.36 2345Explorer/9.2.1.17116
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Explorer/56.0.2924.90 Safari/537.36 2345Chrome/9.2.1.17116
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Explorer/56.0.2924.90 Safari/537.36 2345Chrome/9.2.1.17116
我希望“SAFARI”行仅作为输出

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/56.0.2924.90 Chrome/537.36 2345Explorer/9.2.1.17116
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Explorer/56.0.2924.90 Safari/537.36 2345Chrome/9.2.1.17116
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Explorer/56.0.2924.90 Safari/537.36 2345Chrome/9.2.1.17116
我期望“EXPLORER”行仅作为输出

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/56.0.2924.90 Chrome/537.36 2345Explorer/9.2.1.17116
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Explorer/56.0.2924.90 Safari/537.36 2345Chrome/9.2.1.17116
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Explorer/56.0.2924.90 Safari/537.36 2345Chrome/9.2.1.17116
当我查询带有“CHROME”的行时,我不希望将“CHROME”行作为输出

只考虑Chrome和Chrome=1 如果我有1-2-3,我想输出 如果2-1-3我不想输出 如果2-3-1不想输出

我只想在第一时间得到它

我希望能够只显示Chrome最先出现的字段,然后使用Safari最先出现的另一个查询字段(不是这种情况)。 你有什么想法吗?从下面的代码开始

 SELECT *
 FROM user_logins
 WHERE user_agent NOT LIKE '%iPhone%'
 AND user_agent NOT LIKE '%Linux; Android%'
 order BY id DESC
 LIMIT 1000

我想注册它,比如:

so=# with c(s) as (values
 ('blahChrome/56.0.2924.90 Safari/537.36 2345')
,('blahSafariblahChromeblah')
)
select s ~ 'Chrome.*Safari', s ~ 'Safari.*Chrome',s from c;
 ?column? | ?column? |                     s
----------+----------+--------------------------------------------
 t        | f        | blahChrome/56.0.2924.90 Safari/537.36 2345
 f        | t        | blahSafariblahChromeblah
(2 rows)

您可以使用带有模式参数的
substring()
来提取表单/#.#.#.#的元素。然后将其与“Chrome”进行比较:

select substring(x from '[^ ]*/[0-9]+[.][0-9]+[.][0-9]+[.][0-9]'),
       v.*
from (values ('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.90 Safari/537.36 2345Explorer/9.2.1.17116'),
             ('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/56.0.2924.90 Chrome/537.36 2345Explorer/9.2.1.17116')
     ) v(x)
where substring(x from '[^ ]*/[0-9]+[.][0-9]+[.][0-9]+[.][0-9]') like 'Chrome/%';

那么,您想从您的帖子中给定的字符串中获取第一个与Chrome匹配的行,是吗?你能添加一些样本数据和预期结果吗?你的问题不清楚。请添加样本数据。