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匹配的行,是吗?你能添加一些样本数据和预期结果吗?你的问题不清楚。请添加样本数据。