テスト第一。その後、それはその位置に部分文字列を使用して存在している場合「?前にスラッシュ」、見つけるために、逆に、私は/がどこにあるか知っているとしたら、私は、URLのその部分を抽出することができます?
select
url
, substr(url,1,qmarkpos-1)
, case when qmarkpos > 0 then instr(reverse(substr(url,1,qmarkpos-1)),'/') end
, substr(substr(url,1,qmarkpos-1),qmarkpos-instr(reverse(substr(url,1,qmarkpos-1)),'/'),qmarkpos)
from (
select url, instr(url,'?') qmarkpos
from (
select 'https://www.google.com/search?source=' as url union all
select 'https://www.google.com/search' as url union all
select 'https://www.google.com/search?source=uqu iqu iugqidug iqugd' as url union all
select 'https://www.google.com/search?source/qh ohqod hi=' as url
) d
) d2
+---+-------------------------------------------------------------+-------------------------------+--------------+---------+
| | url | substr(url,1,qmarkpos-1) | case ... end | result |
+---+-------------------------------------------------------------+-------------------------------+--------------+---------+
| 1 | https://www.google.com/search?source= | https://www.google.com/search | 7 | /search |
| 2 | https://www.google.com/search | | NULL | |
| 3 | https://www.google.com/search?source=uqu iqu iugqidug iqugd | https://www.google.com/search | 7 | /search |
| 4 | https://www.google.com/search?source/qh ohqod hi= | https://www.google.com/search | 7 | /search |
+---+-------------------------------------------------------------+-------------------------------+--------------+---------+
Demo
は、有効なデータと無効なデータのサンプルを提供し、手動で準備し、そのデータから必要な「期待した結果」を提供します。 –