نظرة عامة
يمكنك عمومًا استخدام صيغ الدوال غير RFC عند العمل مع النطاقات المسجَّلة علنًا التي لا تتضمن معلومات مستخدم ولا رموز @.
يوضح الجدول أدناه الرموز التي يمكن (✔) أو لا يمكن (✗) تحليلها بواسطة صيغ RFC وغير RFC المقابلة:
| الرمز | non-RFC |
RFC |
|
|---|---|---|---|
| ' ' | ✗ | ✗ | |
| \t | ✗ | ✗ | |
| < | ✗ | ✗ | |
| > | ✗ | ✗ | |
| % | ✗ | ✔* | |
| { | ✗ | ✗ | |
| } | ✗ | ✗ | |
| ✗ | ✗ | ||
| \ | ✗ | ✗ | |
| ^ | ✗ | ✗ | |
| ~ | ✗ | ✔* | |
| [ | ✗ | ✗ | |
| ] | ✗ | ✔ | |
| ; | ✗ | ✔* | |
| = | ✗ | ✔* | |
| & | ✗ | ✔* |
الرموز المعلَّمة بـ * هي محددات فرعية وفق RFC 3986، ويُسمح بها في معلومات المستخدم التي تلي الرمز @.
يوجد نوعان من دوال URL:
- دوال تستخرج أجزاء من URL. إذا لم يكن الجزء المطلوب موجودًا في URL، فستُعاد سلسلة فارغة.
- دوال تزيل جزءًا من URL. وإذا لم يحتوِ URL على أي شيء مماثل، فسيبقى دون تغيير.
URLHierarchy
أُضيف في: v1.1.0
يعيد مصفوفة تحتوي على URL بعد اقتطاعه من النهاية عند الرموز / و? و# في المسار وسلسلة الاستعلام. وتُحتسب أحرف الفصل المتتالية كأنها حرف واحد. تتضمن النتيجة البروتوكول والمضيف كأول عنصر، ثم مسارات تزداد طولًا تدريجيًا لتشكّل تسلسلاً هرميًا.
البنية
URLHierarchy(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']URLPathHierarchy
أُضيفت في: v1.1.0
تعيد مصفوفة تحتوي على مكوّن المسار في URL، مع اقتطاع نهايته عند الرموز / و? و#. وعلى عكس URLHierarchy، لا تتضمن النتيجة protocol وhost — بل تبدأ من المسار. وتُحسب محارف الفصل المتتالية على أنها محرف واحد.
البنية
URLPathHierarchy(url)الوسيطات
url— عنوان URL المطلوب معالجته.String
القيمة المعادة
تعيد مصفوفة من مكوّنات مسار URL المتزايدة طولًا تدريجيًا، والتي تُشكّل تسلسلًا هرميًا. Array(String)
أمثلة
الاستخدام الأساسي
SELECT URLPathHierarchy('https://example.com/a/b?c=1')['/a/','/a/b?','/a/b?c=1']cutFragment
أُضيفت في: v1.1.0
تزيل مُعرّف الجزء، بما في ذلك علامة #، من عنوان URL.
الصياغة
cutFragment(url)المعاملات
url— URL.String
القيمة المُعادة
تُعيد عنوان 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 │
└────────────────────────────────────────────────────────────────┘cutQueryString
أُضيف في: v1.1.0
يزيل سلسلة الاستعلام من URL، بما في ذلك علامة الاستفهام.
الصيغة
cutQueryString(url)الوسيطات
url— URL.String
القيمة المعادة
تُعيد 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— URL.String
القيمة المعادة
يعيد 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 أو سلسلة نطاق لمعالجتها.Stringtld_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-domaincutToFirstSignificantSubdomainCustomRFC
أُضيف في: 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')─┐
│ 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')example.customcutToFirstSignificantSubdomainRFC
أُضيف في: 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 │
└───────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────┘cutURLParameter
أُضيف في: v1.1.0
يزيل أول ظهور لـ name=value لكل معلَمة مطلوبة من URL.
لا تتطابق إلا المعلَمات المكتوبة بالشكل name=، لذا تبقى معلَمة العلَم الخالية من القيمة كما هي؛ على سبيل المثال، تُرجع cutURLParameter('http://bigmir.net/?a&c=d', 'a') عنوان URL دون تغيير.
لا تُشفِّر هذه الدالة الأحرف في أسماء المعلَمات ولا تفك ترميزها. على سبيل المثال، يُعامَل Client ID وClient%20ID على أنهما اسما معلَمتين مختلفين.
البنية
cutURLParameter(url, name)الوسيطات
url— URL.Stringname— اسم معلَمة URL.StringأوArray(String)
القيمة المُعادة
URL بعد إزالة أول ظهور لـ name=value لكل معلَمة مطلوبة. 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 │
└──────────────────────────────┴───────────────────────────┘cutWWW
قُدِّمت في: v1.1.0
تزيل البادئة www.، إن وُجدت، من اسم النطاق في URL.
البنية
cutWWW(url)الوسيطات
url— URL.String
القيمة المُعادة
يعيد 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 │
└────────────────────────────────────────────────────────────┘decodeURLComponent
قُدِّمت في: v1.1.0
تأخذ سلسلة مشفّرة بتنسيق URL كمدخل، ثم تفكّ ترميزها لتعيدها إلى صيغتها الأصلية المقروءة.
الصياغة
decodeURLComponent(url)المعاملات
url— URL.String
القيمة المُعادة
يعيد عنوان 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; │
└────────────────────────────────────────┘decodeURLFormComponent
أُضيف في: v1.1.0
يفك ترميز السلاسل المرمَّزة وفق URL باستخدام قواعد ترميز النماذج (RFC-1866)، حيث تُحوَّل علامات + إلى مسافات وتُفكَّك المحارف المرمَّزة بالنسبة المئوية.
البنية
decodeURLFormComponent(url)الوسيطات
url— URL.String
القيمة المُعادة
يعيد عنوان 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 │
└───────────────────────────────────────────┘domain
قُدِّم في: v1.1.0
يستخرج اسم المضيف من URL.
يمكن تحديد URL مع بروتوكول أو من دونه.
الصيغة
domain(url)الوسائط
url— URL.String
القيمة المُعادة
يعيد اسم المضيف إذا أمكن تحليل سلسلة الإدخال على أنها 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 │
└────────────────────────────────────────────────────────┘domainRFC
أُضيف في: v22.10.0
يستخرج اسم المضيف من URL.
يشبه domain، لكنه متوافق مع RFC 3986.
الصيغة
domainRFC(url)الوسائط
url— URL.String
القيمة المعادة
يعيد اسم المضيف إذا أمكن تحليل سلسلة الإدخال باعتبارها 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 │
└───────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────┘domainWithoutWWW
قُدِّمت في: v1.1.0
تُرجع اسم النطاق من URL بدون البادئة www. إذا كانت موجودة.
البنية
domainWithoutWWW(url)الوسائط
url— URL.String
القيمة المُعادة
تُعيد اسم النطاق إذا أمكن تفسير سلسلة الإدخال على أنها URL (من دون www. في البداية)، وإلا فتُعيد سلسلة فارغة. String
أمثلة
مثال على الاستخدام
SELECT domainWithoutWWW('http://paul@www.example.com:80/');┌─domainWithoutWWW('http://paul@www.example.com:80/')─┐
│ example.com │
└─────────────────────────────────────────────────────┘domainWithoutWWWRFC
استُحدثت في: v1.1.0
تُرجع اسم النطاق من دون www. في بدايته إن وُجدت. وهي مشابهة لـ domainWithoutWWW، لكنها متوافقة مع RFC 3986.
الصياغة
domainWithoutWWWRFC(url)الوسائط
url— URL.String
القيمة المُعادة
تُعيد اسم النطاق إذا أمكن تحليل سلسلة الإدخال باعتبارها 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 │
└─────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────┘encodeURLComponent
قُدِّمت في: v22.3.0
تأخذ سلسلة نصية عادية وتحوّلها إلى صيغة بترميز URL (الترميز بالنسبة المئوية)، حيث تُستبدل الأحرف الخاصة بما يقابلها بترميز النسبة المئوية.
الصيغة
encodeURLComponent(url)المعاملات
url— URL.String
القيمة المُعادة
يُرجع عنوان 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 │
└──────────────────────────────────────────────────────────┘encodeURLFormComponent
أُضيفت في: v22.3.0
تُرمِّز السلاسل النصية وفق قواعد ترميز النماذج (RFC-1866)، حيث تُحوَّل المسافات إلى علامات +، وتُرمَّز الأحرف الخاصة باستخدام الترميز بالنسبة المئوية.
البنية
encodeURLFormComponent(url)الوسيطات
url— URL.String
القيمة المُعادة
تُرجع عنوان 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 │
└───────────────────────────────────────────────────────────┘extractURLParameter
أُضيف في: v1.1.0
يعيد قيمة المعلَمة name في URL إن وُجدت، وإلا فتُعاد سلسلة فارغة.
إذا كانت هناك عدة معلَمات بهذا الاسم، فتُعاد أول قيمة منها.
تفترض الدالة أن المعلَمة ضمن المعلَمة url مُرمَّزة بالطريقة نفسها كما في الوسيط name.
الصيغة
extractURLParameter(url, name)الوسيطات
القيمة المُعادة
تُرجع قيمة معلَمة URL ذات الاسم المحدد. String
أمثلة
مثال على الاستخدام
SELECT extractURLParameter('http://example.com/?param1=value1¶m2=value2', 'param1');┌─extractURLParameter('http://example.com/?param1=value1¶m2=value2', 'param1')─┐
│ value1 │
└──────────────────────────────────────────────────────────────────────────────────┘extractURLParameterNames
تم تقديمه في: v1.1.0
يعيد مصفوفة من السلاسل النصية التي تمثل أسماء معلمات URL. ولا تُفك ترميز القيم.
البنية
extractURLParameterNames(url)الوسيطات
url— URL.String
القيمة المُعادة
تُعيد مصفوفة من السلاسل النصية التي تقابل أسماء معلمات URL. Array(String)
أمثلة
مثال على الاستخدام
SELECT extractURLParameterNames('http://example.com/?param1=value1¶m2=value2');┌─extractURLParameterNames('http://example.com/?param1=value1¶m2=value2')─┐
│ ['param1','param2'] │
└─────────────────────────────────────────────────────────────────────────────┘extractURLParameters
أُضيفت في: v1.1.0
تعيد مصفوفة من سلاسل name=value النصية التي تقابل معلمات URL.
ولا تُفك ترميز القيم.
البنية
extractURLParameters(url)الوسائط
url— URL.String
القيمة المُعادة
تُرجِع مصفوفة من سلاسل name=value التي تقابل معلمات URL. Array(String)
أمثلة
مثال على الاستخدام
SELECT extractURLParameters('http://example.com/?param1=value1¶m2=value2');┌─extractURLParameters('http://example.com/?param1=value1¶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/')┌─firstSignificantSubdomain('https://news.clickhouse.com/')─┐
│ clickhouse │
└───────────────────────────────────────────────────────────┘firstSignificantSubdomainCustom
أُضيفت في: v21.1.0
تعيد أول نطاق فرعي مهم من URL باستخدام قائمة TLD المخصّصة. ويشير اسم قائمة TLD المخصّصة إلى إعداد يحدّد لواحق النطاقات التي ينبغي التعامل معها على أنها نطاقات مستوى أعلى. ويكون ذلك مفيدًا لهياكل نطاقات المستوى الأعلى غير القياسية. تستخدم الدالة خوارزمية مبسطة لتحليل URL تفترض إزالة البروتوكول وكل ما يليه.
الصياغة
firstSignificantSubdomainCustom(url, tld_list_name)المعاملات
url— عنوان URL المراد استخراج النطاق الفرعي منه.Stringtld_list_name— اسم قائمة TLD المخصّصة من التكوين.String
القيمة المُعادة
يعيد أول نطاق فرعي مهم. String
أمثلة
الاستخدام الأساسي
SELECT firstSignificantSubdomainCustom('https://news.example.com', 'public_suffix_list')examplefirstSignificantSubdomainCustomRFC
قُدِّم في: v22.10.0
مماثل لـ firstSignificantSubdomainCustom، لكنه يستخدم تحليل URL متوافقًا مع RFC 3986 بدلًا من الخوارزمية المبسطة.
الصياغة
firstSignificantSubdomainCustomRFC(url, tld_list_name)المعاملات
url— عنوان URL المراد استخراج النطاق الفرعي منه.Stringtld_list_name— اسم قائمة TLD المخصصة في التهيئة.String
القيمة المُعادة
يعيد أول نطاق فرعي مهم. String
أمثلة
الاستخدام الأساسي
SELECT firstSignificantSubdomainCustomRFC('https://news.example.com', 'public_suffix_list')examplefirstSignificantSubdomainRFC
استُحدثت في: v22.10.0
تُرجِع "أول نطاق فرعي مهم" وفقًا لـ RFC 1034.
الصيغة
firstSignificantSubdomainRFC(url)المعاملات
- لا توجد.
القيمة المُعادة
أمثلة
fragment
أُضيف في: v1.1.0
يعيد معرّف الجزء من دون رمز # في بدايته.
الصياغة
fragment(url)الوسائط
url— URL.String
القيمة المُعادة
يعيد معرّف الجزء من دون رمز # في البداية. String
أمثلة
مثال على الاستخدام
SELECT fragment('https://clickhouse.com/docs/get-started/setup/cloud#1-create-a-clickhouse-service');┌─fragment('https://clickhouse.com/docs/get-started/setup/cloud#1-create-a-clickhouse-service')─┐
│ 1-create-a-clickhouse-service │
└───────────────────────────────────────────────────────────────────────────────────────────────┘netloc
تم تقديمه في: v20.5.0
يستخرج جزء موقع الشبكة (username:password@host:port) من URL.
البنية
netloc(url)المعاملات
url— URL.String
القيمة المعادة
تعيد القيمة username:password@host:port من URL محدد. String
أمثلة
مثال على الاستخدام
SELECT netloc('http://paul@www.example.com:80/');┌─netloc('http://paul@www.example.com:80/')─┐
│ paul@www.example.com:80 │
└───────────────────────────────────────────┘path
أُضيف في: v1.1.0
يعيد المسار من URL بدون سلسلة الاستعلام.
الصيغة
path(url)المعاملات
url— URL.String
القيمة المُعادة
يُرجع مسار URL من دون سلسلة الاستعلام. String
أمثلة
مثال على الاستخدام
SELECT path('https://clickhouse.com/docs/reference/functions/regular-functions/url-functions?query=value');┌─path('https://clickhouse.com/docs/reference/functions/regular-functions/url-functions?query=value')─┐
│ /docs/reference/functions/regular-functions/url-functions │
└─────────────────────────────────────────────────────────────────────────────────────────────────────┘pathFull
قُدِّم في: v1.1.0
مماثل لـ path، لكنه يتضمن سلسلة الاستعلام والجزء من URL.
الصيغة
pathFull(url)الوسائط
url— URL.String
القيمة المُعادة
تعيد مسار URL، بما في ذلك سلسلة الاستعلام والجزء. String
أمثلة
مثال على الاستخدام
SELECT pathFull('https://clickhouse.com/docs/reference/functions/regular-functions/url-functions?query=value#section');┌─pathFull('https://clickhouse.com/docs/reference/functions/regular-functions/url-functions?query=value#section')─┐
│ /docs/reference/functions/regular-functions/url-functions?query=value#section │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘port
قُدِّمت في: 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 │
└──────────────────────────────────────────┴──────────────────────────────────────────┘portRFC
استُحدث في: v22.10.0
يعيد المنفذ أو default_port إذا كان URL لا يتضمن منفذًا أو تعذّر تحليله.
مشابه لـ port، لكنه متوافق مع RFC 3986.
الصياغة
portRFC(url[, default_port])الوسائط
url— URL.Stringdefault_port— اختياري. رقم المنفذ الافتراضي الذي سيتم إرجاعه.0افتراضيًا.UInt16
القيمة المعادة
يعيد المنفذ أو المنفذ الافتراضي إذا لم يكن هناك منفذ في URL أو في حال حدوث خطأ في التحقق. UInt16
أمثلة
مثال على الاستخدام
SELECT port('http://user:password@example.com:8080/'), portRFC('http://user:password@example.com:8080/');┌─port('http://user:password@example.com:8080/')─┬─portRFC('http://user:password@example.com:8080/')─┐
│ 0 │ 8080 │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘protocol
أُضيف في: v1.1.0
يستخرج البروتوكول من عنوان URL.
أمثلة على القيم المُعادة الشائعة: http, https, ftp, mailto, tel, magnet.
البنية
protocol(url)المعاملات
url— URL.String
القيمة المُعادة
يعيد بروتوكول عنوان URL، أو سلسلة فارغة إذا تعذّر تحديده. String
أمثلة
مثال على الاستخدام
SELECT protocol('https://clickhouse.com/');┌─protocol('https://clickhouse.com/')─┐
│ https │
└─────────────────────────────────────┘queryString
أُضيف في: v1.1.0
يعيد جزء الاستعلام من URL بدون علامة الاستفهام الأولى، وبدون # وكل ما بعد #.
الصياغة
queryString(url)الوسيطات
url— URL.String
القيمة المُعادة
تعيد سلسلة الاستعلام في URL من دون علامة الاستفهام الأولى والمقطع المرجعي. String
أمثلة
مثال على الاستخدام
SELECT queryString('https://clickhouse.com/docs?query=value¶m=123#section');┌─queryString('https://clickhouse.com/docs?query=value¶m=123#section')─┐
│ query=value¶m=123 │
└──────────────────────────────────────────────────────────────────────────┘queryStringAndFragment
أُضيف في: v1.1.0
يعيد سلسلة الاستعلام ومُعرّف الجزء في URL.
البنية
queryStringAndFragment(url)الوسائط
url— URL.String
القيمة المُعادة
تعيد سلسلة الاستعلام ومُعرّف الجزء في URL. String
أمثلة
مثال على الاستخدام
SELECT queryStringAndFragment('https://clickhouse.com/docs?query=value¶m=123#section');┌─queryStringAndFragment('https://clickhouse.com/docs?query=value¶m=123#section')─┐
│ query=value¶m=123#section │
└─────────────────────────────────────────────────────────────────────────────────────┘topLevelDomain
قُدِّمت في: v1.1.0
يستخرج نطاق المستوى الأعلى من URL.
البنية
topLevelDomain(url)المعاملات
url— URL.String
القيمة المعادة
تعيد اسم النطاق إذا أمكن تفسير سلسلة الإدخال على أنها 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.
الصياغة
topLevelDomainRFC(url)الوسائط
url— URL.String
القيمة المُعادة
اسم النطاق إذا أمكن تحليل سلسلة الإدخال باعتبارها 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 │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘