الانتقال إلى المحتوى الرئيسي

IPv4CIDRToRange

أُضيفت في: v20.1.0 تأخذ عنوان IPv4 مع طول بادئة التوجيه غير الصنفي بين النطاقات (CIDR) الخاصة به، وتُرجع نطاق عناوين الشبكة الفرعية على هيئة Tuple من قيمتَي IPv4: أول عنوان وآخر عنوان في تلك الشبكة الفرعية. للاطلاع على إصدار IPv6، انظر IPv6CIDRToRange. البنية
IPv4CIDRToRange(ipv4, cidr)
المعاملات القيمة المُعادة يعيد قيمة Tuple تحتوي على عنواني IPv4 يمثّلان نطاق الشبكة الفرعية. Tuple(IPv4, IPv4) أمثلة مثال على الاستخدام
Query
SELECT IPv4CIDRToRange(toIPv4('192.168.5.2'), 16);
Response
┌─IPv4CIDRToRange(toIPv4('192.168.5.2'), 16)─┐
│ ('192.168.0.0','192.168.255.255')          │
└────────────────────────────────────────────┘

IPv4NumToString

أُضيفت في: v1.1.0 تحوّل عددًا صحيحًا من 32 بت إلى التمثيل النصي لعنوان IPv4 بصيغة التدوين العشري المنقّط (بالتنسيق A.B.C.D). وتفسّر الإدخال باستخدام ترتيب البايتات big-endian. البنية
IPv4NumToString(num)
الأسماء البديلة: INET_NTOA المعاملات
  • num — عنوان IPv4 بصيغة رقم UInt32. UInt32
القيمة المُعادة يُرجع رقمًا يمثّل عنوان MAC، أو 0 إذا كانت الصيغة غير صالحة. String أمثلة مثال على الاستخدام
Query
IPv4NumToString(3232235521)
Response
192.168.0.1

IPv4NumToStringClassC

أُضيف في: v1.1.0 يحوّل عددًا صحيحًا من 32 بت إلى التمثيل النصي لعنوان IPv4 الخاص به بتدوين عشري منقّط (بالتنسيق A.B.C.D)، على غرار IPv4NumToString، ولكن باستخدام xxx بدلًا من الأوكتيت الأخير. البنية
IPv4NumToStringClassC(num)
المعاملات
  • num — عنوان IPv4 ممثَّلًا كرقم UInt32. UInt32
القيمة المُعادة يعيد سلسلة نصية لعنوان IPv4 مع استبدال الثُّمانيّة الأخيرة بـ xxx. String أمثلة مثال أساسي مع التجميع
Query
SELECT
    IPv4NumToStringClassC(ClientIP) AS k,
    count() AS c
FROM test.hits
GROUP BY k
ORDER BY c DESC
LIMIT 10
Response
┌─k──────────────┬─────c─┐
│ 83.149.9.xxx   │ 26238 │
│ 217.118.81.xxx │ 26074 │
│ 213.87.129.xxx │ 25481 │
│ 83.149.8.xxx   │ 24984 │
│ 217.118.83.xxx │ 22797 │
│ 78.25.120.xxx  │ 22354 │
│ 213.87.131.xxx │ 21285 │
│ 78.25.121.xxx  │ 20887 │
│ 188.162.65.xxx │ 19694 │
│ 83.149.48.xxx  │ 17406 │
└────────────────┴───────┘

IPv4StringToNum

أُضيف في: v1.1.0 يحوّل سلسلة عنوان IPv4 المكتوبة بالتدوين العشري المنقّط (بالتنسيق A.B.C.D) إلى تمثيلها العددي الصحيح المقابل بطول 32 بت. (وهذا هو عكس IPv4NumToString). إذا كان عنوان IPv4 بتنسيق غير صالح، فسيتم طرح استثناء. البنية
IPv4StringToNum(string)
الأسماء البديلة: INET_ATON المعاملات
  • string — سلسلة نصية لعنوان IPv4. String
القيمة المُعادة يُرجع عنوان IPv4. UInt32 أمثلة مثال على الاستخدام
Query
IPv4StringToNum('192.168.0.1')
Response
3232235521

IPv4StringToNumOrDefault

أُضيف في: v22.3.0 يحوّل سلسلة نصية لعنوان IPv4 مكتوبة بتدوين عشري منقّط (بتنسيق A.B.C.D) إلى التمثيل المقابل لها كعدد صحيح من 32 بت، ولكن إذا كان عنوان IPv4 بتنسيق غير صالح، فإنه يُرجع 0. البنية
IPv4StringToNumOrDefault(string)
المعاملات
  • string — عنوان IPv4 بصيغة نصية. String
القيمة المُعادة يُرجع عنوان IPv4، أو 0 إذا كان غير صالح. UInt32 أمثلة مثال على عنوان غير صالح
Query
SELECT
    IPv4StringToNumOrDefault('127.0.0.1') AS valid,
    IPv4StringToNumOrDefault('invalid') AS invalid;
Response
┌──────valid─┬─invalid─┐
│ 2130706433 │       0 │
└────────────┴─────────┘

IPv4StringToNumOrNull

أُضيف في: v22.3.0 يحوّل عددًا صحيحًا من 32 بت إلى التمثيل النصي لعنوان IPv4 بتدوين عشري منقّط (بتنسيق A.B.C.D)، ولكن إذا كان عنوان IPv4 بتنسيق غير صالح، فإنه يُرجع NULL. البنية
IPv4StringToNumOrNull(string)
المعاملات
  • string — سلسلة نصية لعنوان IPv4. String
القيمة المُعادة يعيد عنوان IPv4، أو NULL إذا كان غير صالح. Nullable(UInt32) أمثلة مثال على عنوان غير صالح
Query
SELECT
IPv4StringToNumOrNull('127.0.0.1') AS valid,
IPv4StringToNumOrNull('invalid') AS invalid;
Response
┌──────valid─┬─invalid─┐
│ 2130706433 │    ᴺᵁᴸᴸ │
└────────────┴─────────┘

IPv4ToIPv6

أُضيفت في: v1.1.0 تفسِّر عددًا بطول 32 بت (big endian) على أنه عنوان IPv4، ثم تفسِّره بوصفه عنوان IPv6 المقابل بتنسيق FixedString(16). البنية
IPv4ToIPv6(x)
المعاملات
  • x — عنوان IPv4. UInt32
القيمة المعادة يعيد عنوان IPv6 بالتنسيق الثنائي. FixedString(16) أمثلة مثال على الاستخدام
Query
SELECT IPv6NumToString(IPv4ToIPv6(IPv4StringToNum('192.168.0.1'))) AS addr;
Response
┌─addr───────────────┐
│ ::ffff:192.168.0.1 │
└────────────────────┘

IPv6CIDRToRange

أُضيفت في: v20.1.0 تأخذ عنوان IPv6 مع طول بادئة CIDR، وتُرجع نطاق عناوين الشبكة الفرعية على شكل Tuple من عنوانَي IPv6: الأدنى والأعلى ضمن تلك الشبكة الفرعية. للاطلاع على إصدار IPv4، راجع IPv4CIDRToRange. البنية
IPv6CIDRToRange(ipv6, cidr)
المعاملات القيمة المُعادة تعيد قيمة من النوع Tuple تتضمن عنواني IPv6 يمثّلان نطاق الشبكة الفرعية. Tuple(IPv6, IPv6) أمثلة مثال على الاستخدام
Query
SELECT IPv6CIDRToRange(toIPv6('2001:0db8:0000:85a3:0000:0000:ac1f:8001'), 32);
Response
┌─IPv6CIDRToRange(toIPv6('2001:0db8:0000:85a3:0000:0000:ac1f:8001'), 32)─┐
│ ('2001:db8::','2001:db8:ffff:ffff:ffff:ffff:ffff:ffff')                │
└────────────────────────────────────────────────────────────────────────┘

IPv6NumToString

أُضيفت في: v1.1.0 يحوّل عنوان IPv6 من التنسيق الثنائي (FixedString(16)) إلى تمثيله النصي القياسي. تُعرَض عناوين IPv6 المضمَّن فيها IPv4 بالتنسيق ::ffff:111.222.33.44. البنية
IPv6NumToString(x)
الأسماء البديلة: INET6_NTOA المعاملات القيمة المُعادة يعيد سلسلة عنوان IPv6 بتنسيق نصي. String أمثلة مثال على الاستخدام
Query
SELECT IPv6NumToString(toFixedString(unhex('2A0206B8000000000000000000000011'), 16)) AS addr;
Response
┌─addr─────────┐
│ 2a02:6b8::11 │
└──────────────┘
تحليل IPv6 باستخدام جدول hits
Query
SELECT
    IPv6NumToString(ClientIP6 AS k),
    count() AS c
FROM hits_all
WHERE EventDate = today() AND substring(ClientIP6, 1, 12) != unhex('00000000000000000000FFFF')
GROUP BY k
ORDER BY c DESC
LIMIT 10
Response
┌─IPv6NumToString(ClientIP6)──────────────┬─────c─┐
│ 2a02:2168:aaa:bbbb::2                   │ 24695 │
│ 2a02:2698:abcd:abcd:abcd:abcd:8888:5555 │ 22408 │
│ 2a02:6b8:0:fff::ff                      │ 16389 │
│ 2a01:4f8:111:6666::2                    │ 16016 │
│ 2a02:2168:888:222::1                    │ 15896 │
│ 2a01:7e00::ffff:ffff:ffff:222           │ 14774 │
│ 2a02:8109:eee:ee:eeee:eeee:eeee:eeee    │ 14443 │
│ 2a02:810b:8888:888:8888:8888:8888:8888  │ 14345 │
│ 2a02:6b8:0:444:4444:4444:4444:4444      │ 14279 │
│ 2a01:7e00::ffff:ffff:ffff:ffff          │ 13880 │
└─────────────────────────────────────────┴───────┘
عناوين IPv4 الممثلة بصيغة IPv6
Query
SELECT
    IPv6NumToString(ClientIP6 AS k),
    count() AS c
FROM hits_all
WHERE EventDate = today()
GROUP BY k
ORDER BY c DESC
LIMIT 10
Response
┌─IPv6NumToString(ClientIP6)─┬──────c─┐
│ ::ffff:94.26.111.111       │ 747440 │
│ ::ffff:37.143.222.4        │ 529483 │
│ ::ffff:5.166.111.99        │ 317707 │
│ ::ffff:46.38.11.77         │ 263086 │
│ ::ffff:79.105.111.111      │ 186611 │
│ ::ffff:93.92.111.88        │ 176773 │
│ ::ffff:84.53.111.33        │ 158709 │
│ ::ffff:217.118.11.22       │ 154004 │
│ ::ffff:217.118.11.33       │ 148449 │
│ ::ffff:217.118.11.44       │ 148243 │
└────────────────────────────┴────────┘

IPv6StringToNum

أُضيف في: v1.1.0 يحوّل عنوان IPv6 من تمثيله النصي القياسي إلى تنسيق ثنائي (FixedString(16)). يقبل عنوان IPv6 مضمَّن فيه IPv4 بالتنسيق ::ffff:111.222.33.44.. إذا كان عنوان IPv6 بتنسيق غير صالح، يتم طرح استثناء. إذا كانت سلسلة الإدخال تحتوي على عنوان IPv4 صالح، فسيُرجِع مكافئه من IPv6. يمكن أن تكون قيمة HEX بأحرف كبيرة أو صغيرة. البنية
IPv6StringToNum(string)
الأسماء البديلة: INET6_ATON المعاملات
  • string — سلسلة نصية لعنوان IPv6. String
القيمة المعادة تعيد عنوان IPv6 بصيغة ثنائية. FixedString(16) أمثلة مثال أساسي
Query
SELECT addr, cutIPv6(IPv6StringToNum(addr), 0, 0) FROM (SELECT ['notaddress', '127.0.0.1', '1111::ffff'] AS addr) ARRAY JOIN addr;
Response
┌─addr───────┬─cutIPv6(IPv6StringToNum(addr), 0, 0)─┐
│ notaddress │ ::                                   │
│ 127.0.0.1  │ ::ffff:127.0.0.1                     │
│ 1111::ffff │ 1111::ffff                           │
└────────────┴──────────────────────────────────────┘

IPv6StringToNumOrDefault

قُدِّمت في: v22.3.0 تُحوِّل عنوان IPv6 من تمثيله النصي القياسي إلى تنسيق ثنائي (FixedString(16)). تقبل عنوان IPv6 مضمَّن فيه IPv4 بالتنسيق ::ffff:111.222.33.44.. إذا كان عنوان IPv6 بتنسيق غير صالح، فستُرجع القيمة الافتراضية ::. البنية
IPv6StringToNumOrDefault(string)
المعاملات
  • string — سلسلة تمثل عنوان IPv6. String
القيمة المُعادة عنوان IPv6 بتنسيق ثنائي، أو FixedString(16) مملوء بالأصفار إذا كان العنوان غير صالح. FixedString(16) أمثلة مثال أساسي على عنوان غير صالح
Query
SELECT
    IPv6NumToString(IPv6StringToNumOrDefault('2001:db8::1')) AS valid,
    IPv6NumToString(IPv6StringToNumOrDefault('invalid')) AS invalid;
Response
┌─valid───────┬─invalid─┐
│ 2001:db8::1 │ ::      │
└─────────────┴─────────┘

IPv6StringToNumOrNull

استُحدث في: v22.3.0 يحوّل عنوان IPv6 من تمثيله النصي القياسي إلى صيغة ثنائية (FixedString(16)). يقبل عنوان IPv6 مضمَّن فيه IPv4 بالتنسيق ::ffff:111.222.33.44.. إذا كان عنوان IPv6 بتنسيق غير صالح، فستُرجع NULL. البنية
IPv6StringToNumOrNull(string)
المعاملات
  • string — سلسلة نصية لعنوان IPv6. String
القيمة المُعادة يُرجع عنوان IPv6 بصيغة ثنائية، أو NULL إذا كان غير صالح. Nullable(FixedString(16)) أمثلة مثال أساسي بعنوان غير صالح
Query
SELECT
    IPv6NumToString(IPv6StringToNumOrNull('2001:db8::1')) AS valid,
    IPv6StringToNumOrNull('invalid') AS invalid;
Response
┌─valid───────┬─invalid─┐
│ 2001:db8::1 │    ᴺᵁᴸᴸ │
└─────────────┴─────────┘

cutIPv6

استُحدث في: v1.1.0 يقبل قيمة FixedString(16) تحتوي على عنوان IPv6 بالتنسيق الثنائي. يُرجع سلسلة نصية تحتوي على العنوان بعد إزالة العدد المحدد من البايتات منه، بتنسيق نصي. الصياغة
cutIPv6(x, bytesToCutForIPv6, bytesToCutForIPv4)
الوسيطات
  • x — عنوان IPv6 بصيغة ثنائية. FixedString(16) أو IPv6
  • bytesToCutForIPv6 — عدد البايتات المطلوب إزالتها من IPv6. UInt8
  • bytesToCutForIPv4 — عدد البايتات المطلوب إزالتها من IPv4. UInt8
القيمة المعادة تُرجِع سلسلة نصية تحتوي على عنوان IPv6 بتنسيق نصي بعد إزالة البايتات المحددة. String أمثلة مثال على الاستخدام
Query
WITH
    IPv6StringToNum('2001:0DB8:AC10:FE01:FEED:BABE:CAFE:F00D') AS ipv6,
    IPv4ToIPv6(IPv4StringToNum('192.168.0.1')) AS ipv4
SELECT
    cutIPv6(ipv6, 2, 0),
    cutIPv6(ipv4, 0, 2)
Response
┌─cutIPv6(ipv6, 2, 0)─────────────────┬─cutIPv6(ipv4, 0, 2)─┐
│ 2001:db8:ac10:fe01:feed:babe:cafe:0 │ ::ffff:192.168.0.0  │
└─────────────────────────────────────┴─────────────────────┘

isIPAddressInRange

أُضيفت في: v21.4.0 يحدّد ما إذا كان عنوان IP يقع ضمن شبكة ممثّلة بترميز Classless Inter-Domain Routing (CIDR). تقبل هذه الدالة عناوين IPv4 وIPv6 (والشبكات) الممثّلة كسلاسل نصية. وتُرجع 0 إذا لم يتطابق إصدار IP للعنوان مع إصدار CIDR. الصيغة
isIPAddressInRange(address, prefix)
الوسيطات
  • address — عنوان IPv4 أو IPv6. String
  • prefix — بادئة شبكة IPv4 أو IPv6 بتنسيق CIDR. String
القيمة المُعادة يعيد 1 إذا كان إصدار IP للعنوان يطابق CIDR، وإلا 0. UInt8 أمثلة عنوان IPv4 ضمن النطاق
Query
SELECT isIPAddressInRange('127.0.0.1', '127.0.0.0/8')
Response
1
عنوان IPv4 خارج النطاق
Query
SELECT isIPAddressInRange('127.0.0.1', 'ffff::/16')
Response
0
عنوان IPv6 خارج النطاق
Query
SELECT isIPAddressInRange('::ffff:192.168.0.1', '::ffff:192.168.0.4/128')
Response
0

isIPv4String

أُضيفت في: v21.1.0 تحدّد ما إذا كانت سلسلة الإدخال عنوان IPv4 أم لا. للاطّلاع على إصدار IPv6، راجع isIPv6String. الصيغة
isIPv4String(string)
المعاملات
  • string — سلسلة نصية لعنوان IP المطلوب التحقق منه. String
القيمة المُعادة تُرجع 1 إذا كانت string عنوان IPv4، وإلا فتُرجع 0. UInt8 أمثلة مثال على الاستخدام
Query
SELECT addr, isIPv4String(addr)
FROM(
SELECT ['0.0.0.0', '127.0.0.1', '::ffff:127.0.0.1'] AS addr
)
ARRAY JOIN addr;
Response
┌─addr─────────────┬─isIPv4String(addr)─┐
│ 0.0.0.0          │                  1 │
│ 127.0.0.1        │                  1 │
│ ::ffff:127.0.0.1 │                  0 │
└──────────────────┴────────────────────┘

isIPv6String

أُضيف في: v21.1.0 يتحقق مما إذا كانت سلسلة الإدخال عنوان IPv6 أم لا. للاطلاع على إصدار IPv4، راجع isIPv4String. الصيغة
isIPv6String(string)
الوسائط
  • string — سلسلة نصية لعنوان IP المراد التحقق منه. String
القيمة المُعادة تُرجِع 1 إذا كانت string عنوان IPv6، وإلا فتُرجِع 0. UInt8 أمثلة مثال على الاستخدام
Query
SELECT addr, isIPv6String(addr)
FROM(SELECT ['::', '1111::ffff', '::ffff:127.0.0.1', '127.0.0.1'] AS addr)
ARRAY JOIN addr;
Response
┌─addr─────────────┬─isIPv6String(addr)─┐
│ ::               │                  1 │
│ 1111::ffff       │                  1 │
│ ::ffff:127.0.0.1 │                  1 │
│ 127.0.0.1        │                  0 │
└──────────────────┴────────────────────┘

toIPv4

أُضيف في: v20.1.0 يحوّل سلسلة نصية أو عنوان IPv4 بصيغة UInt32 إلى النوع IPv4. وهو مشابه للدالتين IPv4StringToNum وIPv4NumToString، لكنه يدعم نوعَي البيانات: السلاسل النصية والأعداد الصحيحة غير الموقَّعة كوسيطات إدخال. الصياغة
toIPv4(x)
الوسيطات القيمة المعادة يعيد عنوان IPv4. IPv4 أمثلة مثال على الاستخدام
Query
SELECT toIPv4('171.225.130.45');
Response
┌─toIPv4('171.225.130.45')─┐
│ 171.225.130.45           │
└──────────────────────────┘
مقارنة بدالتي IPv4StringToNum و IPv4NumToString.
Query
WITH
    '171.225.130.45' AS IPv4_string
SELECT
    hex(IPv4StringToNum(IPv4_string)),
    hex(toIPv4(IPv4_string))
Response
┌─hex(IPv4StringToNum(IPv4_string))─┬─hex(toIPv4(IPv4_string))─┐
│ ABE1822D                          │ ABE1822D                 │
└───────────────────────────────────┴──────────────────────────┘
التحويل من عدد صحيح
Query
SELECT toIPv4(2130706433);
Response
┌─toIPv4(2130706433)─┐
│ 127.0.0.1          │
└────────────────────┘

toIPv4OrDefault

أُضيف في: v22.3.0 يحوِّل سلسلة نصية أو قيمة من النوع UInt32 تمثّل عنوان IPv4 إلى النوع IPv4. إذا كان عنوان IPv4 بتنسيق غير صالح، فسيُرجِع 0.0.0.0 ‏(IPv4 بقيمة 0) أو قيمة IPv4 الافتراضية المُقدَّمة. البنية
toIPv4OrDefault(string[, default])
الوسائط
  • string — سلسلة عنوان IP المراد تحويلها. String
  • default — اختياري. القيمة التي تُعاد إذا كانت السلسلة عنوان IPv4 غير صالح. IPv4
القيمة المعادة يُرجع عنوان IPv4 الناتج عن تحويل السلسلة، أو القيمة الافتراضية إذا فشل التحويل. IPv4 أمثلة سلاسل IPv4 صالحة وغير صالحة
Query
WITH
    '192.168.1.1' AS valid_IPv4_string,
    '999.999.999.999' AS invalid_IPv4_string,
    'not_an_ip' AS malformed_string
SELECT
    toIPv4OrDefault(valid_IPv4_string) AS valid,
    toIPv4OrDefault(invalid_IPv4_string) AS default_value,
    toIPv4OrDefault(malformed_string, toIPv4('8.8.8.8')) AS provided_default;
Response
┌─valid─────────┬─default_value─┬─provided_default─┐
│ 192.168.1.1   │ 0.0.0.0       │ 8.8.8.8          │
└───────────────┴───────────────┴──────────────────┘

toIPv4OrNull

قُدِّمت في: v22.3.0 يحوّل قيمة الإدخال إلى قيمة من النوع IPv4، لكنه يعيد NULL في حال حدوث خطأ. يشبه toIPv4، لكنه يعيد NULL بدلًا من رفع استثناء عند حدوث أخطاء في التحويل. الوسيطات المدعومة:
  • التمثيلات النصية لعناوين IPv4 بالتدوين العشري المنقّط.
  • التمثيلات الصحيحة لعناوين IPv4.
الوسيطات غير المدعومة (تعيد NULL):
  • تنسيقات عناوين IP غير الصالحة.
  • عناوين IPv6.
  • القيم الخارجة عن النطاق.
  • العناوين غير الصحيحة.
البنية
toIPv4OrNull(x)
الوسيطات
  • x — عنوان IPv4 بصيغة نصية أو كعدد صحيح. String أو Integer
القيمة المُعادة يعيد عنوان IPv4 عند النجاح، وإلا NULL. IPv4 أو NULL أمثلة مثال على الاستخدام
Query
SELECT
    toIPv4OrNull('192.168.1.1') AS valid_ip,
    toIPv4OrNull('invalid.ip') AS invalid_ip
Response
┌─valid_ip────┬─invalid_ip─┐
│ 192.168.1.1 │       ᴺᵁᴸᴸ │
└─────────────┴────────────┘

toIPv4OrZero

أُضيف في: v23.1.0 يحوّل قيمة إدخال إلى قيمة من النوع IPv4، لكنه يعيد عنوان IPv4 صفريًا في حال حدوث خطأ. يشبه toIPv4، لكنه يعيد عنوان IPv4 صفريًا (0.0.0.0) بدلًا من رفع استثناء عند حدوث أخطاء في التحويل. الوسيطات المدعومة:
  • التمثيلات النصية لعناوين IPv4 بالتدوين العشري المنقّط.
  • التمثيلات العددية الصحيحة لعناوين IPv4.
الوسيطات غير المدعومة (تعيد عنوان IPv4 صفريًا):
  • تنسيقات عناوين IP غير الصالحة.
  • عناوين IPv6.
  • القيم الخارجة عن النطاق.
البنية
toIPv4OrZero(x)
المعاملات
  • x — تمثيل نصي أو عدد صحيح لعنوان IPv4. String أو Integer
القيمة المُعادة يعيد عنوان IPv4 عند النجاح، وإلا فيُعيد عنوان IPv4 صفريًا (0.0.0.0). IPv4 أمثلة مثال على الاستخدام
Query
SELECT
    toIPv4OrZero('192.168.1.1') AS valid_ip,
    toIPv4OrZero('invalid.ip') AS invalid_ip
Response
┌─valid_ip────┬─invalid_ip─┐
│ 192.168.1.1 │ 0.0.0.0    │
└─────────────┴────────────┘

toIPv6

أُضيف في: v20.1.0 يحوّل سلسلة نصية أو عنوان IPv6 بصيغة UInt128 إلى النوع IPv6. بالنسبة إلى السلاسل النصية، إذا كان عنوان IPv6 بتنسيق غير صالح، فستُعاد قيمة فارغة. وهو مشابه للدالتين IPv6StringToNum وIPv6NumToString، اللتين تحوّلان عنوان IPv6 من التنسيق الثنائي وإليه (أي FixedString(16)). إذا احتوت سلسلة الإدخال على عنوان IPv4 صالح، فستُعاد الصيغة المكافئة له في IPv6. الصياغة
toIPv6(x)
المعاملات القيمة المُعادة يُرجع عنوان IPv6. IPv6 أمثلة مثال على الاستخدام
Query
WITH '2001:438:ffff::407d:1bc1' AS IPv6_string
SELECT
    hex(IPv6StringToNum(IPv6_string)),
    hex(toIPv6(IPv6_string));
Response
┌─hex(IPv6StringToNum(IPv6_string))─┬─hex(toIPv6(IPv6_string))─────────┐
│ 20010438FFFF000000000000407D1BC1  │ 20010438FFFF000000000000407D1BC1 │
└───────────────────────────────────┴──────────────────────────────────┘
مطابقة IPv4 مع IPv6
Query
SELECT toIPv6('127.0.0.1');
Response
┌─toIPv6('127.0.0.1')─┐
│ ::ffff:127.0.0.1    │
└─────────────────────┘

toIPv6OrDefault

قُدِّمت في: v22.3.0 يحوّل سلسلة نصية أو قيمة UInt128 تمثّل عنوان IPv6 إلى النوع IPv6. إذا كان عنوان IPv6 بتنسيق غير صالح، فسيُرجِع :: ‏(IPv6 بقيمة 0) أو قيمة IPv6 الافتراضية المُحدَّدة. البنية
toIPv6OrDefault(string[, default])
المعاملات
  • string — سلسلة عنوان IP المراد تحويلها. - default — اختياري. القيمة المطلوب إرجاعها إذا كانت string ذات تنسيق غير صالح.
القيمة المُعادة يُرجع عنوان IPv6، وإلا فيُرجع :: أو قيمة default الاختيارية المُقدَّمة إذا كانت الوسيطة string ذات تنسيق غير صالح. IPv6 أمثلة سلاسل IPv6 صالحة وغير صالحة
Query
WITH
    '2001:0db8:85a3:0000:0000:8a2e:0370:7334' AS valid_IPv6_string,
    '2001:0db8:85a3::8a2e:370g:7334' AS invalid_IPv6_string,
    'not_an_ipv6' AS malformed_string
SELECT
    toIPv6OrDefault(valid_IPv6_string) AS valid,
    toIPv6OrDefault(invalid_IPv6_string) AS default_value,
    toIPv6OrDefault(malformed_string, toIPv6('::1')) AS provided_default;
Response
┌─valid──────────────────────────────────┬─default_value─┬─provided_default─┐
│ 2001:db8:85a3::8a2e:370:7334           │ ::            │ ::1              │
└────────────────────────────────────────┴───────────────┴──────────────────┘

toIPv6OrNull

أُضيف في: v22.3.0 يحوّل قيمة الإدخال إلى قيمة من النوع IPv6، لكنه يعيد NULL عند حدوث خطأ. يشبه toIPv6، لكنه يعيد NULL بدلًا من رفع استثناء عند حدوث أخطاء في التحويل. الوسائط المدعومة:
  • التمثيلات النصية لعناوين IPv6 بالتدوين القياسي.
  • التمثيلات النصية لعناوين IPv4 (تُحوَّل إلى IPv4-mapped IPv6).
  • التمثيلات الثنائية لعناوين IPv6.
الوسائط غير المدعومة (تعيد NULL):
  • تنسيقات عناوين IP غير الصالحة.
  • عناوين IPv6 سيئة التكوين.
  • القيم الخارجة عن النطاق.
  • تدوين غير صالح.
البنية
toIPv6OrNull(x)
الوسيطات
  • x — تمثيل نصي لعنوان IPv6 أو IPv4. String
القيمة المُعادة يعيد عنوان IPv6 عند النجاح، وإلا يُرجع NULL. IPv6 أو NULL أمثلة مثال على الاستخدام
Query
SELECT
    toIPv6OrNull('2001:0db8:85a3:0000:0000:8a2e:0370:7334') AS valid_ipv6,
    toIPv6OrNull('invalid::ip') AS invalid_ipv6
Response
┌─valid_ipv6──────────────────────────┬─invalid_ipv6─┐
│ 2001:db8:85a3::8a2e:370:7334        │         ᴺᵁᴸᴸ │
└─────────────────────────────────────┴──────────────┘

toIPv6OrZero

أُضيف في: v23.1.0 يحوّل قيمة الإدخال إلى قيمة من النوع IPv6، لكنه يعيد عنوان IPv6 الصفري في حال حدوث خطأ. وهو يشبه toIPv6، لكنه يعيد عنوان IPv6 الصفري (::) بدلًا من رفع استثناء عند حدوث أخطاء في التحويل. الوسيطات المدعومة:
  • تمثيلات نصية لعناوين IPv6 بالتدوين القياسي.
  • تمثيلات نصية لعناوين IPv4 (تُحوَّل إلى IPv4-mapped IPv6).
  • تمثيلات ثنائية لعناوين IPv6.
الوسيطات غير المدعومة (تعيد عنوان IPv6 الصفري):
  • تنسيقات عناوين IP غير صالحة.
  • عناوين IPv6 غير صحيحة البنية.
  • قيم خارج النطاق.
الصيغة
toIPv6OrZero(x)
الوسيطات
  • x — تمثيل نصي لعنوان IPv6 أو IPv4. String
القيمة المُعادة يعيد عنوان IPv6 عند النجاح، وإلا يعيد عنوان IPv6 صفريًا (::). IPv6 أمثلة مثال على الاستخدام
Query
SELECT
    toIPv6OrZero('2001:0db8:85a3:0000:0000:8a2e:0370:7334') AS valid_ipv6,
    toIPv6OrZero('invalid::ip') AS invalid_ipv6
Response
┌─valid_ipv6──────────────────────────┬─invalid_ipv6─┐
│ 2001:db8:85a3::8a2e:370:7334        │ ::           │
└─────────────────────────────────────┴──────────────┘
آخر تعديل في ٢٥ يونيو ٢٠٢٦