الدوال المذكورة في هذا القسم مُحسَّنة لتحقيق أقصى أداء، وفي معظم الحالات لا تتوافق مع معيار RFC-3986.
أما الدوال التي تطبّق RFC-3986، فيُلحق RFC باسم الدالة، وتكون أبطأ عمومًا.
يمكنك عمومًا استخدام صيغ الدوال غير RFC عند العمل مع النطاقات المسجَّلة علنًا التي لا تتضمن معلومات مستخدم ولا رموز @.
يوضح الجدول أدناه الرموز التي يمكن (✔) أو لا يمكن (✗) تحليلها بواسطة صيغ RFC وغير RFC المقابلة:
| الرمز | non-RFC | RFC | |
|---|
| ’ ’ | ✗ | ✗ | |
| \t | ✗ | ✗ | |
| < | ✗ | ✗ | |
| > | ✗ | ✗ | |
| % | ✗ | ✔* | |
| { | ✗ | ✗ | |
| } | ✗ | ✗ | |
| | ✗ | ✗ |
| \ | ✗ | ✗ | |
| ^ | ✗ | ✗ | |
| ~ | ✗ | ✔* | |
| [ | ✗ | ✗ | |
| ] | ✗ | ✔ | |
| ; | ✗ | ✔* | |
| = | ✗ | ✔* | |
| & | ✗ | ✔* | |
الرموز المعلَّمة بـ * هي محددات فرعية وفق RFC 3986، ويُسمح بها في معلومات المستخدم التي تلي الرمز @.
يوجد نوعان من دوال URL:
- دوال تستخرج أجزاء من URL. إذا لم يكن الجزء المطلوب موجودًا في URL، فستُعاد سلسلة فارغة.
- دوال تزيل جزءًا من URL. وإذا لم يحتوِ URL على أي شيء مماثل، فسيبقى دون تغيير.
الدوال أدناه مُولَّدة من جدول النظام system.functions.
أُضيف في: v1.1.0
يعيد مصفوفة تحتوي على URL بعد اقتطاعه من النهاية عند الرموز / و? و# في المسار وسلسلة الاستعلام. وتُحتسب أحرف الفصل المتتالية كأنها حرف واحد. تتضمن النتيجة البروتوكول والمضيف كأول عنصر، ثم مسارات تزداد طولًا تدريجيًا لتشكّل تسلسلاً هرميًا.
البنية
المعاملات
url — عنوان URL المطلوب معالجته. String
القيمة المُعادة
تُرجع مصفوفة من عناوين URL الأطول تدريجيًا، بما يشكّل تسلسلًا هرميًا. Array(String)
أمثلة
الاستخدام الأساسي
SELECT URLHierarchy('https://example.com/a/b?c=1')
['https://example.com/','https://example.com/a/','https://example.com/a/b','https://example.com/a/b?c=1']
أُضيفت في: v1.1.0
تعيد مصفوفة تحتوي على مكوّن المسار في URL، مع اقتطاع نهايته عند الرموز / و? و#. وعلى عكس URLHierarchy، لا تتضمن النتيجة protocol وhost — بل تبدأ من المسار. وتُحسب محارف الفصل المتتالية على أنها محرف واحد.
البنية
الوسيطات
url — عنوان URL المطلوب معالجته. String
القيمة المعادة
تعيد مصفوفة من مكوّنات مسار URL المتزايدة طولًا تدريجيًا، والتي تُشكّل تسلسلًا هرميًا. Array(String)
أمثلة
الاستخدام الأساسي
SELECT URLPathHierarchy('https://example.com/a/b?c=1')
['/a/','/a/b','/a/b?c=1']
أُضيفت في: v1.1.0
تزيل مُعرّف الجزء، بما في ذلك علامة #، من عنوان URL.
الصياغة
المعاملات
القيمة المُعادة
تُعيد عنوان URL بعد إزالة مُعرّف الجزء منه. String
أمثلة
مثال على الاستخدام
SELECT cutFragment('http://example.com/path?query=value#fragment123');
┌─cutFragment('http://example.com/path?query=value#fragment123')─┐
│ http://example.com/path?query=value │
└────────────────────────────────────────────────────────────────┘
أُضيف في: v1.1.0
يزيل سلسلة الاستعلام من URL، بما في ذلك علامة الاستفهام.
الصيغة
الوسيطات
القيمة المعادة
تُعيد URL بعد إزالة سلسلة الاستعلام منه. String
أمثلة
مثال على الاستخدام
SELECT cutQueryString('http://example.com/path?query=value¶m=123#fragment');
┌─cutQueryString('http://example.com/path?query=value¶m=123#fragment')─┐
│ http://example.com/path#fragment │
└──────────────────────────────────────────────────────────────────────────┘
cutQueryStringAndFragment
أُضيف في: v1.1.0
يزيل سلسلة الاستعلام ومُعرّف الجزء، بما في ذلك علامة الاستفهام والرمز #، من URL.
البنية
cutQueryStringAndFragment(url)
الوسيطات
القيمة المعادة
يعيد URL بعد إزالة سلسلة الاستعلام ومُعرّف الجزء. String
أمثلة
مثال على الاستخدام
SELECT cutQueryStringAndFragment('http://example.com/path?query=value¶m=123#fragment');
┌─cutQueryStringAndFragment('http://example.com/path?query=value¶m=123#fragment')─┐
│ http://example.com/path │
└─────────────────────────────────────────────────────────────────────────────────────┘
cutToFirstSignificantSubdomain
أُضيفت في: v1.1.0
تعيد الجزء من اسم النطاق الذي يتضمن النطاقات الفرعية ذات المستوى الأعلى حتى أول نطاق فرعي مهم.
الصياغة
cutToFirstSignificantSubdomain(url)
الوسائط
url — URL أو سلسلة نطاق للمعالجة. String
القيمة المُعادة
تُعيد الجزء من النطاق الذي يتضمن النطاقات الفرعية ذات المستوى الأعلى وصولًا إلى أول نطاق فرعي مهم إن أمكن، وإلا فتُعيد سلسلة فارغة. String
أمثلة
مثال على الاستخدام
SELECT
cutToFirstSignificantSubdomain('https://news.clickhouse.com.tr/'),
cutToFirstSignificantSubdomain('www.tr'),
cutToFirstSignificantSubdomain('tr');
┌─cutToFirstSignificantSubdomain('https://news.clickhouse.com.tr/')─┬─cutToFirstSignificantSubdomain('www.tr')─┬─cutToFirstSignificantSubdomain('tr')─┐
│ clickhouse.com.tr │ tr │ │
└───────────────────────────────────────────────────────────────────┴──────────────────────────────────────────┴──────────────────────────────────────┘
cutToFirstSignificantSubdomainCustom
استُحدث في: v21.1.0
يعيد الجزء من اسم النطاق الذي يتضمن النطاقات الفرعية ذات المستوى الأعلى حتى أول نطاق فرعي مهم. يقبل اسم قائمة TLD مخصّصة. قد تكون هذه الدالة مفيدة إذا كنت بحاجة إلى قائمة TLD محدّثة أو كانت لديك قائمة مخصّصة.
مثال على التهيئة
<!-- <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> -->
<top_level_domains_lists>
<!-- https://publicsuffix.org/list/public_suffix_list.dat -->
<public_suffix_list>public_suffix_list.dat</public_suffix_list>
<!-- NOTE: path is under top_level_domains_path -->
</top_level_domains_lists>
البنية
cutToFirstSignificantSubdomainCustom(url, tld_list_name)
الوسيطات
url — URL أو سلسلة نطاق لمعالجتها. String
tld_list_name — اسم قائمة TLD المخصّصة المُعدّة في ClickHouse. const String
القيمة المُعادة
يعيد جزء النطاق الذي يشمل النطاقات الفرعية ذات المستوى الأعلى حتى أول نطاق فرعي مهم. String
أمثلة
استخدام قائمة TLD مخصّصة للنطاقات غير القياسية
SELECT cutToFirstSignificantSubdomainCustom('bar.foo.there-is-no-such-domain', 'public_suffix_list')
foo.there-is-no-such-domain
cutToFirstSignificantSubdomainCustomRFC
أُضيف في: v22.10.0
يعيد الجزء من النطاق الذي يتضمن النطاقات الفرعية ذات المستوى الأعلى حتى أول نطاق فرعي مهم.
يقبل اسم قائمة TLD مخصصة.
قد تكون هذه الدالة مفيدة إذا كنت بحاجة إلى قائمة TLD أحدث أو إذا كانت لديك قائمة مخصصة.
وهي مشابهة لـ cutToFirstSignificantSubdomainCustom، لكنها متوافقة مع RFC 3986.
مثال على التهيئة
<!-- <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> -->
<top_level_domains_lists>
<!-- https://publicsuffix.org/list/public_suffix_list.dat -->
<public_suffix_list>public_suffix_list.dat</public_suffix_list>
<!-- NOTE: path is under top_level_domains_path -->
</top_level_domains_lists>
الصيغة
cutToFirstSignificantSubdomainCustomRFC(url, tld_list_name)
المعاملات
url — URL أو سلسلة نطاق تُعالَج وفقًا للمواصفة RFC 3986. - tld_list_name — اسم قائمة TLD المخصصة المُعدّة في ClickHouse.
القيمة المعادة
تعيد الجزء من النطاق الذي يتضمن النطاقات الفرعية ذات المستوى الأعلى حتى أول نطاق فرعي مهم. String
أمثلة
مثال على الاستخدام
SELECT cutToFirstSignificantSubdomainCustomRFC('www.foo', 'public_suffix_list');
┌─cutToFirstSignificantSubdomainCustomRFC('www.foo', 'public_suffix_list')─────┐
│ www.foo │
└──────────────────────────────────────────────────────────────────────────────┘
cutToFirstSignificantSubdomainCustomWithWWW
استُحدث في: v21.1.0
يعيد الجزء من اسم النطاق الذي يتضمن النطاقات الفرعية العليا حتى أول نطاق فرعي مهم، من دون إزالة ‘www’. ويقبل اسم قائمة TLD مخصصة. قد يكون ذلك مفيدًا إذا كنت بحاجة إلى قائمة TLD محدَّثة أو كانت لديك قائمة مخصصة.
مثال على التهيئة
<!-- <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> -->
<top_level_domains_lists>
<!-- https://publicsuffix.org/list/public_suffix_list.dat -->
<public_suffix_list>public_suffix_list.dat</public_suffix_list>
<!-- NOTE: path is under top_level_domains_path -->
</top_level_domains_lists>
**Syntax**
```sql
cutToFirstSignificantSubdomainCustomWithWWW(url, tld_list_name)
الوسيطات
url — URL أو سلسلة نطاق لمعالجتها. - tld_list_name — اسم قائمة TLD المخصّصة المُعدّة في ClickHouse.
القيمة المُعادة
الجزء من النطاق الذي يتضمن النطاقات الفرعية ذات المستوى الأعلى حتى أول نطاق فرعي مهم، من دون حذف ‘www’. String
أمثلة
مثال على الاستخدام
SELECT cutToFirstSignificantSubdomainCustomWithWWW('www.foo', 'public_suffix_list');
┌─cutToFirstSignificantSubdomainCustomWithWWW('www.foo', 'public_suffix_list')─┐
│ www.foo │
└──────────────────────────────────────────────────────────────────────────────┘
cutToFirstSignificantSubdomainCustomWithWWWRFC
أُضيف في: v22.10.0
يعيد الجزء من النطاق الذي يتضمن النطاقات الفرعية العليا حتى أول نطاق فرعي مهم، من دون إزالة www.
يقبل اسم قائمة TLD مخصصة.
قد يكون هذا مفيدًا إذا كنت بحاجة إلى قائمة TLD محدَّثة أو إذا كانت لديك قائمة مخصصة.
مشابه لـ cutToFirstSignificantSubdomainCustomWithWWW، لكنه متوافق مع RFC 3986.
مثال على التهيئة
{/* <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> */}
<top_level_domains_lists>
{/* https://publicsuffix.org/list/public_suffix_list.dat */}
<public_suffix_list>public_suffix_list.dat</public_suffix_list>
{/* NOTE: path is under top_level_domains_path */}
</top_level_domains_lists>
**Syntax**
```sql
cutToFirstSignificantSubdomainCustomWithWWWRFC(url, tld_list_name)
الوسيطات
url — URL أو سلسلة نطاق لمعالجتها وفقًا للمعيار RFC 3986. - tld_list_name — اسم قائمة TLD المخصّصة التي تم إعدادها في ClickHouse.
القيمة المُعادة
يُرجع الجزء من النطاق الذي يتضمن النطاقات الفرعية ذات المستوى الأعلى حتى أول نطاق فرعي مهم، من دون إزالة www. String
أمثلة
تحليل RFC 3986 مع الاحتفاظ بـ www باستخدام قائمة TLD مخصّصة
SELECT cutToFirstSignificantSubdomainCustomWithWWWRFC('https://www.subdomain.example.custom', 'public_suffix_list')
cutToFirstSignificantSubdomainRFC
أُضيف في: v22.10.0
يعيد الجزء من النطاق الذي يتضمن النطاقات الفرعية العليا حتى الوصول إلى “أول نطاق فرعي مهم”. وهو مشابه لـ cutToFirstSignificantSubdomain، لكنه متوافق مع RFC 3986.
الصياغة
cutToFirstSignificantSubdomainRFC(url)
الوسيطات
url — URL أو سلسلة نطاق تُعالَج وفقًا للمواصفة RFC 3986. String
القيمة المُعادة
يعيد الجزء من النطاق الذي يتضمن النطاقات الفرعية ذات المستوى الأعلى حتى أول نطاق فرعي مهم، إن أمكن؛ وإلا فيُرجع سلسلة فارغة. String
أمثلة
مثال على الاستخدام
SELECT
cutToFirstSignificantSubdomain('http://user:password@example.com:8080'),
cutToFirstSignificantSubdomainRFC('http://user:password@example.com:8080');
┌─cutToFirstSignificantSubdomain('http://user:password@example.com:8080')─┬─cutToFirstSignificantSubdomainRFC('http://user:password@example.com:8080')─┐
│ │ example.com │
└─────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────┘
cutToFirstSignificantSubdomainWithWWW
أُضيفت في: v20.12.0
تُرجع الجزء من النطاق الذي يتضمن النطاقات الفرعية ذات المستوى الأعلى حتى “أول نطاق فرعي مهم”، من دون إزالة البادئة ‘www.’.
وهي مشابهة لـ cutToFirstSignificantSubdomain، لكنها تحتفظ بالبادئة ‘www.’ إذا كانت موجودة.
الصيغة
cutToFirstSignificantSubdomainWithWWW(url)
الوسائط
url — عنوان URL أو سلسلة نطاق لمعالجتها. String
القيمة المُعادة
يعيد الجزء من النطاق الذي يتضمن النطاقات الفرعية العليا حتى أول نطاق فرعي مهم (بما في ذلك www) إن أمكن، وإلا فيُرجع سلسلة فارغة. String
أمثلة
مثال على الاستخدام
SELECT
cutToFirstSignificantSubdomainWithWWW('https://news.clickhouse.com.tr/'),
cutToFirstSignificantSubdomainWithWWW('www.tr'),
cutToFirstSignificantSubdomainWithWWW('tr');
┌─cutToFirstSignificantSubdomainWithWWW('https://news.clickhouse.com.tr/')─┬─cutToFirstSignificantSubdomainWithWWW('www.tr')─┬─cutToFirstSignificantSubdomainWithWWW('tr')─┐
│ clickhouse.com.tr │ www.tr │ │
└──────────────────────────────────────────────────────────────────────────┴─────────────────────────────────────────────────┴─────────────────────────────────────────────┘
cutToFirstSignificantSubdomainWithWWWRFC
أُضيف في: v22.10.0
يعيد الجزء من اسم النطاق الذي يتضمن النطاقات الفرعية ذات المستوى الأعلى حتى “أول نطاق فرعي مهم”، من دون إزالة ‘www’. وهو مشابه لـ cutToFirstSignificantSubdomainWithWWW، لكنه متوافق مع RFC 3986.
البنية
cutToFirstSignificantSubdomainWithWWWRFC(url)
الوسائط
url — URL أو سلسلة نطاق لمعالجتها وفقًا للمعيار RFC 3986.
القيمة المعادة
يعيد الجزء من النطاق الذي يتضمن النطاقات الفرعية ذات المستوى الأعلى وصولًا إلى أول نطاق فرعي مهم (بما في ذلك ‘www’) إن أمكن، وإلا فيعيد سلسلة فارغة String
أمثلة
مثال على الاستخدام
SELECT
cutToFirstSignificantSubdomainWithWWW('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy'),
cutToFirstSignificantSubdomainWithWWWRFC('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy');
┌─cutToFirstSignificantSubdomainWithWWW('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy')─┬─cutToFirstSignificantSubdomainWithWWWRFC('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy')─┐
│ │ mail.ru │
└───────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────┘
أُضيف في: v1.1.0
يزيل المعلَمة name من URL، إذا كانت موجودة.
لا تُشفِّر هذه الدالة الأحرف في أسماء المعلَمات ولا تفك ترميزها. على سبيل المثال، يُعامَل Client ID وClient%20ID على أنهما اسما معلَمتين مختلفين.
البنية
cutURLParameter(url, name)
الوسيطات
القيمة المُعادة
URL بعد إزالة معلَمة URL name منه. String
أمثلة
مثال على الاستخدام
SELECT
cutURLParameter('http://bigmir.net/?a=b&c=d&e=f#g', 'a') AS url_without_a,
cutURLParameter('http://bigmir.net/?a=b&c=d&e=f#g', ['c', 'e']) AS url_without_c_and_e;
┌─url_without_a────────────────┬─url_without_c_and_e──────┐
│ http://bigmir.net/?c=d&e=f#g │ http://bigmir.net/?a=b#g │
└──────────────────────────────┴──────────────────────────┘
قُدِّمت في: v1.1.0
تزيل البادئة www.، إن وُجدت، من اسم النطاق في URL.
البنية
الوسيطات
القيمة المُعادة
يعيد URL بعد إزالة البادئة www. من النطاق. String
أمثلة
مثال على الاستخدام
SELECT cutWWW('http://www.example.com/path?query=value#fragment');
┌─cutWWW('http://www.example.com/path?query=value#fragment')─┐
│ http://example.com/path?query=value#fragment │
└────────────────────────────────────────────────────────────┘
قُدِّمت في: v1.1.0
تأخذ سلسلة مشفّرة بتنسيق URL كمدخل، ثم تفكّ ترميزها لتعيدها إلى صيغتها الأصلية المقروءة.
الصياغة
المعاملات
القيمة المُعادة
يعيد عنوان URL بعد فك ترميزه. String
أمثلة
مثال على الاستخدام
SELECT decodeURLComponent('http://127.0.0.1:8123/?query=SELECT%201%3B') AS DecodedURL;
┌─DecodedURL─────────────────────────────┐
│ http://127.0.0.1:8123/?query=SELECT 1; │
└────────────────────────────────────────┘
أُضيف في: v1.1.0
يفك ترميز السلاسل المرمَّزة وفق URL باستخدام قواعد ترميز النماذج (RFC-1866)، حيث تُحوَّل علامات + إلى مسافات وتُفكَّك المحارف المرمَّزة بالنسبة المئوية.
البنية
decodeURLFormComponent(url)
الوسيطات
القيمة المُعادة
يعيد عنوان URL بعد فك ترميزه. String
أمثلة
مثال على الاستخدام
SELECT decodeURLFormComponent('http://127.0.0.1:8123/?query=SELECT%201+2%2B3') AS DecodedURL;
┌─DecodedURL────────────────────────────────┐
│ http://127.0.0.1:8123/?query=SELECT 1 2+3 │
└───────────────────────────────────────────┘
قُدِّم في: v1.1.0
يستخرج اسم المضيف من URL.
يمكن تحديد URL مع بروتوكول أو من دونه.
الصيغة
الوسائط
القيمة المُعادة
يعيد اسم المضيف إذا أمكن تحليل سلسلة الإدخال على أنها URL، وإلا فسيُعاد نص فارغ. String
أمثلة
مثال على الاستخدام
SELECT domain('svn+ssh://some.svn-hosting.com:80/repo/trunk');
┌─domain('svn+ssh://some.svn-hosting.com:80/repo/trunk')─┐
│ some.svn-hosting.com │
└────────────────────────────────────────────────────────┘
أُضيف في: v22.10.0
يستخرج اسم المضيف من URL.
يشبه domain، لكنه متوافق مع RFC 3986.
الصيغة
الوسائط
القيمة المعادة
يعيد اسم المضيف إذا أمكن تحليل سلسلة الإدخال باعتبارها URL، وإلا فيعيد سلسلة فارغة. String
أمثلة
مثال على الاستخدام
SELECT
domain('http://user:password@example.com:8080/path?query=value#fragment'),
domainRFC('http://user:password@example.com:8080/path?query=value#fragment');
┌─domain('http://user:password@example.com:8080/path?query=value#fragment')─┬─domainRFC('http://user:password@example.com:8080/path?query=value#fragment')─┐
│ │ example.com │
└───────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────┘
قُدِّمت في: v1.1.0
تُرجع اسم النطاق من URL بدون البادئة www. إذا كانت موجودة.
البنية
الوسائط
القيمة المُعادة
تُعيد اسم النطاق إذا أمكن تفسير سلسلة الإدخال على أنها URL (من دون www. في البداية)، وإلا فتُعيد سلسلة فارغة. String
أمثلة
مثال على الاستخدام
SELECT domainWithoutWWW('http://paul@www.example.com:80/');
┌─domainWithoutWWW('http://paul@www.example.com:80/')─┐
│ example.com │
└─────────────────────────────────────────────────────┘
استُحدثت في: v1.1.0
تُرجع اسم النطاق من دون www. في بدايته إن وُجدت. وهي مشابهة لـ domainWithoutWWW، لكنها متوافقة مع RFC 3986.
الصياغة
الوسائط
القيمة المُعادة
تُعيد اسم النطاق إذا أمكن تحليل سلسلة الإدخال باعتبارها URL (من دون www. في البداية)، وإلا فتُعيد سلسلة فارغة. String
أمثلة
مثال للاستخدام
SELECT
domainWithoutWWW('http://user:password@www.example.com:8080/path?query=value#fragment'),
domainWithoutWWWRFC('http://user:password@www.example.com:8080/path?query=value#fragment');
┌─domainWithoutWWW('http://user:password@www.example.com:8080/path?query=value#fragment')─┬─domainWithoutWWWRFC('http://user:password@www.example.com:8080/path?query=value#fragment')─┐
│ │ example.com │
└─────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────┘
قُدِّمت في: v22.3.0
تأخذ سلسلة نصية عادية وتحوّلها إلى صيغة بترميز URL (الترميز بالنسبة المئوية)، حيث تُستبدل الأحرف الخاصة بما يقابلها بترميز النسبة المئوية.
الصيغة
المعاملات
القيمة المُعادة
يُرجع عنوان URL المُرمَّز. String
أمثلة
مثال على الاستخدام
SELECT encodeURLComponent('http://127.0.0.1:8123/?query=SELECT 1;') AS EncodedURL;
┌─EncodedURL───────────────────────────────────────────────┐
│ http%3A%2F%2F127.0.0.1%3A8123%2F%3Fquery%3DSELECT%201%3B │
└──────────────────────────────────────────────────────────┘
أُضيفت في: v22.3.0
تُرمِّز السلاسل النصية وفق قواعد ترميز النماذج (RFC-1866)، حيث تُحوَّل المسافات إلى علامات +، وتُرمَّز الأحرف الخاصة باستخدام الترميز بالنسبة المئوية.
البنية
encodeURLFormComponent(url)
الوسيطات
القيمة المُعادة
تُرجع عنوان URL المُرمَّز. String
أمثلة
مثال للاستخدام
SELECT encodeURLFormComponent('http://127.0.0.1:8123/?query=SELECT 1 2+3') AS EncodedURL;
┌─EncodedURL────────────────────────────────────────────────┐
│ http%3A%2F%2F127.0.0.1%3A8123%2F%3Fquery%3DSELECT+1+2%2B3 │
└───────────────────────────────────────────────────────────┘
أُضيف في: v1.1.0
يعيد قيمة المعلَمة name في URL إن وُجدت، وإلا فتُعاد سلسلة فارغة.
إذا كانت هناك عدة معلَمات بهذا الاسم، فتُعاد أول قيمة منها.
تفترض الدالة أن المعلَمة ضمن المعلَمة url مُرمَّزة بالطريقة نفسها كما في الوسيط name.
الصيغة
extractURLParameter(url, name)
الوسيطات
القيمة المُعادة
تُرجع قيمة معلَمة URL ذات الاسم المحدد. String
أمثلة
مثال على الاستخدام
SELECT extractURLParameter('http://example.com/?param1=value1¶m2=value2', 'param1');
┌─extractURLPa⋯, 'param1')─┐
│ value1 │
└──────────────────────────┘
تم تقديمه في: v1.1.0
يعيد مصفوفة من السلاسل النصية التي تمثل أسماء معلمات URL.
ولا تُفك ترميز القيم.
البنية
extractURLParameterNames(url)
الوسيطات
القيمة المُعادة
تُعيد مصفوفة من السلاسل النصية التي تقابل أسماء معلمات URL. Array(String)
أمثلة
مثال على الاستخدام
SELECT extractURLParameterNames('http://example.com/?param1=value1¶m2=value2');
┌─extractURLPa⋯m2=value2')─┐
│ ['param1','param2'] │
└──────────────────────────┘
أُضيفت في: v1.1.0
تعيد مصفوفة من سلاسل name=value النصية التي تقابل معلمات URL.
ولا تُفك ترميز القيم.
البنية
extractURLParameters(url)
الوسائط
القيمة المُعادة
تُرجِع مصفوفة من سلاسل name=value التي تقابل معلمات URL. Array(String)
أمثلة
مثال على الاستخدام
SELECT extractURLParameters('http://example.com/?param1=value1¶m2=value2');
┌─extractURLParame⋯¶m2=value2')─┐
│ ['param1=value1','param2=value2'] │
└───────────────────────────────────┘
firstSignificantSubdomain
قُدِّمت في: v1.1.0
تعيد “أول نطاق فرعي مهم”.
يُعد أول نطاق فرعي مهم نطاقًا من المستوى الثاني إذا كان ‘com’ أو ‘net’ أو ‘org’ أو ‘co’.
وبخلاف ذلك، يكون نطاقًا من المستوى الثالث.
على سبيل المثال، firstSignificantSubdomain(‘https://news.clickhouse.com/') = ‘clickhouse’، وfirstSignificantSubdomain(‘https://news.clickhouse.com.tr/') = ‘clickhouse’.
قد تتغير في المستقبل قائمة نطاقات المستوى الثاني “غير المهمة” وغيرها من تفاصيل التنفيذ.
البنية
firstSignificantSubdomain(url)
المعاملات
القيمة المعادة
أمثلة
firstSignificantSubdomain
SELECT firstSignificantSubdomain('https://news.clickhouse.com/')
firstSignificantSubdomainCustom
أُضيفت في: v21.1.0
تعيد أول نطاق فرعي مهم من URL باستخدام قائمة TLD المخصّصة. ويشير اسم قائمة TLD المخصّصة إلى إعداد يحدّد لواحق النطاقات التي ينبغي التعامل معها على أنها نطاقات مستوى أعلى. ويكون ذلك مفيدًا لهياكل نطاقات المستوى الأعلى غير القياسية. تستخدم الدالة خوارزمية مبسطة لتحليل URL تفترض إزالة البروتوكول وكل ما يليه.
الصياغة
firstSignificantSubdomainCustom(url, tld_list_name)
المعاملات
url — عنوان URL المراد استخراج النطاق الفرعي منه. String
tld_list_name — اسم قائمة TLD المخصّصة من التكوين. String
القيمة المُعادة
يعيد أول نطاق فرعي مهم. String
أمثلة
الاستخدام الأساسي
SELECT firstSignificantSubdomainCustom('https://news.example.com', 'public_suffix_list')
firstSignificantSubdomainCustomRFC
قُدِّم في: v22.10.0
مماثل لـ firstSignificantSubdomainCustom، لكنه يستخدم تحليل URL متوافقًا مع RFC 3986 بدلًا من الخوارزمية المبسطة.
الصياغة
firstSignificantSubdomainCustomRFC(url, tld_list_name)
المعاملات
url — عنوان URL المراد استخراج النطاق الفرعي منه. String
tld_list_name — اسم قائمة TLD المخصصة في التهيئة. String
القيمة المُعادة
يعيد أول نطاق فرعي مهم. String
أمثلة
الاستخدام الأساسي
SELECT firstSignificantSubdomainCustomRFC('https://news.example.com', 'public_suffix_list')
firstSignificantSubdomainRFC
استُحدثت في: v22.10.0
تُرجِع “أول نطاق فرعي مهم” وفقًا لـ RFC 1034.
الصيغة
firstSignificantSubdomainRFC(url)
المعاملات
القيمة المُعادة
أمثلة
أُضيف في: v1.1.0
يعيد معرّف الجزء من دون رمز # في بدايته.
الصياغة
الوسائط
القيمة المُعادة
يعيد معرّف الجزء من دون رمز # في البداية. String
أمثلة
مثال على الاستخدام
SELECT fragment('https://clickhouse.com/docs/getting-started/quick-start/cloud#1-create-a-clickhouse-service');
┌─fragment('http⋯ouse-service')─┐
│ 1-create-a-clickhouse-service │
└───────────────────────────────┘
تم تقديمه في: v20.5.0
يستخرج جزء موقع الشبكة (username:password@host:port) من URL.
البنية
المعاملات
القيمة المعادة
تعيد القيمة username:password@host:port من URL محدد. String
أمثلة
مثال على الاستخدام
SELECT netloc('http://paul@www.example.com:80/');
┌─netloc('http⋯e.com:80/')─┐
│ paul@www.example.com:80 │
└──────────────────────────┘
أُضيف في: v1.1.0
يعيد المسار من URL بدون سلسلة الاستعلام.
الصيغة
المعاملات
القيمة المُعادة
يُرجع مسار URL من دون سلسلة الاستعلام. String
أمثلة
مثال على الاستخدام
SELECT path('https://clickhouse.com/docs/sql-reference/functions/url-functions/?query=value');
┌─path('https://clickhouse.com/en/sql-reference/functions/url-functions/?query=value')─┐
│ /docs/sql-reference/functions/url-functions/ │
└──────────────────────────────────────────────────────────────────────────────────────┘
قُدِّم في: v1.1.0
مماثل لـ path، لكنه يتضمن سلسلة الاستعلام والمقطع من URL.
الصيغة
الوسائط
القيمة المُعادة
تعيد مسار URL، بما في ذلك سلسلة الاستعلام والجزء التعريفي. String
أمثلة
مثال على الاستخدام
SELECT pathFull('https://clickhouse.com/docs/sql-reference/functions/url-functions/?query=value#section');
┌─pathFull('https://clickhouse.com⋯unctions/?query=value#section')─┐
│ /docs/sql-reference/functions/url-functions/?query=value#section │
└──────────────────────────────────────────────────────────────────┘
قُدِّمت في: v20.5.0
تعيد منفذ URL، أو default_port إذا كان URL لا يتضمن منفذًا أو تعذّر تحليله.
الصيغة
port(url[, default_port])
الوسيطات
url — URL. سلسلة نصية
default_port — اختياري. رقم المنفذ الافتراضي الذي سيتم إرجاعه. القيمة الافتراضية هي 0. UInt16
القيمة المعادة
تُرجع منفذ الـ URL، أو المنفذ الافتراضي إذا لم يكن هناك منفذ في الـ URL أو في حال حدوث خطأ في التحقق. UInt16
أمثلة
مثال على الاستخدام
SELECT port('https://clickhouse.com:8443/docs'), port('https://clickhouse.com/docs', 443);
┌─port('https://clickhouse.com:8443/docs')─┬─port('https://clickhouse.com/docs', 443)─┐
│ 8443 │ 443 │
└──────────────────────────────────────────┴──────────────────────────────────────────┘
استُحدث في: v22.10.0
يعيد المنفذ أو default_port إذا كان URL لا يتضمن منفذًا أو تعذّر تحليله.
مشابه لـ port، لكنه متوافق مع RFC 3986.
الصياغة
portRFC(url[, default_port])
الوسائط
url — URL. String
default_port — اختياري. رقم المنفذ الافتراضي الذي سيتم إرجاعه. 0 افتراضيًا. UInt16
القيمة المعادة
يعيد المنفذ أو المنفذ الافتراضي إذا لم يكن هناك منفذ في URL أو في حال حدوث خطأ في التحقق. UInt16
أمثلة
مثال على الاستخدام
SELECT port('http://user:password@example.com:8080/'), portRFC('http://user:password@example.com:8080/');
┌─port('http:/⋯com:8080/')─┬─portRFC('htt⋯com:8080/')─┐
│ 0 │ 8080 │
└──────────────────────────┴──────────────────────────┘
أُضيف في: v1.1.0
يستخرج البروتوكول من عنوان URL.
أمثلة على القيم المُعادة الشائعة: http, https, ftp, mailto, tel, magnet.
البنية
المعاملات
القيمة المُعادة
يعيد بروتوكول عنوان URL، أو سلسلة فارغة إذا تعذّر تحديده. String
أمثلة
مثال على الاستخدام
SELECT protocol('https://clickhouse.com/');
┌─protocol('https://clickhouse.com/')─┐
│ https │
└─────────────────────────────────────┘
أُضيف في: v1.1.0
يعيد جزء الاستعلام من URL بدون علامة الاستفهام الأولى، وبدون # وكل ما بعد #.
الصياغة
الوسيطات
القيمة المُعادة
تعيد سلسلة الاستعلام في URL من دون علامة الاستفهام الأولى والمقطع المرجعي. String
أمثلة
مثال على الاستخدام
SELECT queryString('https://clickhouse.com/docs?query=value¶m=123#section');
┌─queryString(⋯3#section')─┐
│ query=value¶m=123 │
└──────────────────────────┘
أُضيف في: v1.1.0
يعيد سلسلة الاستعلام ومُعرّف الجزء في URL.
البنية
queryStringAndFragment(url)
الوسائط
القيمة المُعادة
تعيد سلسلة الاستعلام ومُعرّف الجزء في URL. String
أمثلة
مثال على الاستخدام
SELECT queryStringAndFragment('https://clickhouse.com/docs?query=value¶m=123#section');
┌─queryStringAnd⋯=123#section')─┐
│ query=value¶m=123#section │
└───────────────────────────────┘
قُدِّمت في: v1.1.0
يستخرج نطاق المستوى الأعلى من URL.
يمكن تحديد URL سواء تضمّن بروتوكولًا أم لا.
على سبيل المثال:svn+ssh://some.svn-hosting.com:80/repo/trunk
some.svn-hosting.com:80/repo/trunk
https://clickhouse.com/time/
البنية
المعاملات
القيمة المعادة
تعيد اسم النطاق إذا أمكن تفسير سلسلة الإدخال على أنها URL. وإلا، فتعيد سلسلة فارغة. String
أمثلة
مثال على الاستخدام
SELECT topLevelDomain('svn+ssh://www.some.svn-hosting.com:80/repo/trunk');
┌─topLevelDomain('svn+ssh://www.some.svn-hosting.com:80/repo/trunk')─┐
│ com │
└────────────────────────────────────────────────────────────────────┘
topLevelDomainRFC
أُضيف في: v22.10.0
يستخرج نطاق المستوى الأعلى من URL.
وهو مشابه لـ topLevelDomain، لكنه متوافق مع RFC 3986.
الصياغة
الوسائط
القيمة المُعادة
اسم النطاق إذا أمكن تحليل سلسلة الإدخال باعتبارها URL. وإلا فستكون سلسلة فارغة. String
أمثلة
مثال على الاستخدام
SELECT topLevelDomain('http://foo:foo%41bar@foo.com'), topLevelDomainRFC('http://foo:foo%41bar@foo.com');
┌─topLevelDomain('http://foo:foo%41bar@foo.com')─┬─topLevelDomainRFC('http://foo:foo%41bar@foo.com')─┐
│ │ com │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘