AnalyticDB for MySQL menyediakan fungsi URL untuk mengurai, mengekstraksi, dan mengenkode string URL dalam kueri SQL.
| Function | Description |
|---|---|
| PARSE_URL | Mengekstraksi komponen bernama dari URL. |
| URL_DECODE | Mendekode string application/x-www-form-urlencoded. |
| URL_ENCODE | Mengenkode string menggunakan format application/x-www-form-urlencoded. |
| URL_EXTRACT_FRAGMENT | Mengekstraksi identifier fragmen dari URL. |
| URL_EXTRACT_HOST | Mengekstraksi hostname atau alamat IP dari URL. |
| URL_EXTRACT_PARAMETER | Mengekstraksi nilai parameter kueri bernama dari URL. |
| URL_EXTRACT_PATH | Mengekstraksi path dari URL. |
| URL_EXTRACT_PORT | Mengekstraksi nomor port dari URL. |
| URL_EXTRACT_PROTOCOL | Mengekstraksi protokol dari URL. |
| URL_EXTRACT_QUERY | Mengekstraksi string kueri dari URL. |
PARSE_URL
PARSE_URL(url, part [, key]) → varchar
Mengekstraksi komponen yang ditentukan oleh part dari url. Semua parameter bertipe STRING, dan fungsi ini mengembalikan STRING.
Nilai part harus dalam huruf kapital. Nilai yang didukung:
part nilai |
Konten yang diekstraksi | Contoh output |
|---|---|---|
HOST |
Hostname atau alamat IP | example.com |
PATH |
Path, dimulai dari / |
/path/to/resource |
QUERY |
String kueri, dimulai dari ? |
type=animal&name=narwhal |
REF |
Identifier fragmen, dimulai dari # |
nose |
PROTOCOL |
Protokol | http, https, file |
AUTHORITY |
Informasi pengguna, hostname, dan port | username:password@example.com:8042 |
FILE |
Path file dari URL | — |
USERINFO |
Username dan password | username:password |
Jika part bernilai QUERY, berikan key untuk mengambil nilai parameter kueri tertentu.
Fungsi ini mengembalikan NULL jika url, part, atau key bernilai NULL, atau jika part bukan nilai yang valid.
Contoh
Semua contoh menggunakan URL yang sama: file://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose
-- "k1" terdapat dalam string kueri
SELECT url_extract_parameter('http://example.com/path1/p.php?k1=v1&k2=v2&k3&k4#Ref1', 'k1');
-- v1
-- "k5" tidak terdapat dalam string kueri
SELECT url_extract_parameter('http://example.com/path1/p.php?k1=v1&k2=v2&k3&k4#Ref1', 'k5');
-- NULL
URL_DECODE
URL_DECODE(input) → varchar
Mendekode string yang dikodekan dalam format application/x-www-form-urlencoded. Fungsi ini merupakan kebalikan dari URL_ENCODE.
Mengembalikan NULL jika input bernilai NULL.
Aturan pendekodean
-
Karakter
a–z,A–Z, dan0–9tidak berubah. -
.,-,*, dan_tidak berubah. -
+diubah menjadi spasi. -
Urutan persen-encoded (
%xy) didekode menjadi nilai byte yang sesuai, lalu diinterpretasikan sebagai string UTF-8.
Contoh
SELECT url_decode('example+for+url_decode%3A%2F%2F+%28fdsf%29');
-- example for url_decode:// (fdsf)
URL_ENCODE
URL_ENCODE(input) → varchar
Mengenkode string menggunakan format application/x-www-form-urlencoded. Fungsi ini merupakan kebalikan dari URL_DECODE.
Mengembalikan NULL jika input bernilai NULL.
Aturan pengenkodean
-
Karakter
a–z,A–Z, dan0–9tidak berubah. -
.,-,*, dan_tidak berubah. -
Spasi diubah menjadi
+. -
Semua karakter lainnya dikodekan sebagai byte UTF-8 dalam format
%xy, di manaxyadalah nilai heksadesimal byte tersebut.
Contoh
SELECT url_encode('example for url_encode:// (fdsf)');
-- example+for+url_encode%3A%2F%2F+%28fdsf%29
Fungsi ekstraksi URL
Fungsi-fungsi berikut mengekstraksi komponen individual dari URL. Fungsi ini menerima URL yang sesuai dengan struktur standar:
[protocol:][//host[:port]][path][?query][#fragment]
Nilai yang diekstraksi tidak mencakup pemisah sintaks URI seperti :, ?, atau #. Semua fungsi menerima argumen STRING dan mengembalikan STRING.
Semua fungsi mengembalikan NULL jika url bernilai NULL atau tidak valid.
URL_EXTRACT_FRAGMENT
URL_EXTRACT_FRAGMENT(url) → varchar
Mengekstraksi identifier fragmen (bagian setelah #) dari url. Mengembalikan string kosong jika url tidak mengandung identifier fragmen.
Contoh
SELECT url_extract_fragment('http://example.com/path1/p.php?k1=v1&k2=v2#Ref1');
-- Ref1
URL_EXTRACT_HOST
URL_EXTRACT_HOST(url) → varchar
Mengekstraksi hostname atau alamat IP dari url.
Contoh
SELECT url_extract_host('http://example.com/path1/p.php?k1=v1&k2=v2#Ref1');
-- example.com
URL_EXTRACT_PARAMETER
URL_EXTRACT_PARAMETER(url, parameter) → varchar
Mengekstraksi nilai parameter dari string kueri url. Mengembalikan NULL jika url bernilai NULL, parameter bernilai NULL, atau string kueri tidak mengandung parameter.
Contoh
-- "k1" ada dalam string kueri
SELECT url_extract_parameter('http://example.com/path1/p.php?k1=v1&k2=v2&k3&k4#Ref1', 'k1');
-- v1
-- "k5" tidak ada dalam string kueri
SELECT url_extract_parameter('http://example.com/path1/p.php?k1=v1&k2=v2&k3&k4#Ref1', 'k5');
-- NULL
URL_EXTRACT_PATH
URL_EXTRACT_PATH(url) → varchar
Mengekstraksi path dari url. Mengembalikan string kosong jika url tidak mengandung path.
Contoh
SELECT url_extract_path('http://example.com/path1/p.php?k1=v1&k2=v2#Ref1');
-- /path1/p.php
URL_EXTRACT_PORT
URL_EXTRACT_PORT(url) → varchar
Mengekstraksi nomor port dari url. Mengembalikan NULL jika url tidak mengandung port.
Contoh
-- Port tidak ditentukan
SELECT url_extract_port('http://example.com/path1/p.php?k1=v1&k2=v2#Ref1');
-- NULL
-- Port ditentukan
SELECT url_extract_port('http://example.com:8080/path1/p.php?k1=v1&k2=v2#Ref1');
-- 8080
URL_EXTRACT_PROTOCOL
URL_EXTRACT_PROTOCOL(url) → varchar
Mengekstraksi protokol dari url.
Contoh
SELECT url_extract_protocol('http://example.com/path1/p.php?k1=v1&k2=v2#Ref1');
-- http
URL_EXTRACT_QUERY
URL_EXTRACT_QUERY(url) → varchar
Mengekstraksi string kueri (bagian setelah ?, tidak termasuk ? itu sendiri) dari url. Mengembalikan string kosong jika url tidak mengandung string kueri.
Contoh
SELECT url_extract_query('http://example.com/path1/p.php?k1=v1&k2=v2#Ref1');
-- k1=v1&k2=v2