ClickHouse/docs/fa/sql-reference/functions/string-functions.md
Ivan Blinkov d91c97d15d
[docs] replace underscores with hyphens (#10606)
* Replace underscores with hyphens

* remove temporary code

* fix style check

* fix collapse
2020-04-30 21:19:18 +03:00

18 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true d734a8e46d 40 کار با رشته ها

توابع برای کار با رشته

خالی

بازده 1 برای یک رشته خالی و یا 0 برای یک رشته غیر خالی. نتیجه این نوع uint8. یک رشته در نظر گرفته شده است غیر خالی اگر شامل حداقل یک بایت, حتی اگر این یک فضا یا یک بایت پوچ است. این تابع همچنین برای ارریس کار می کند.

notEmpty

بازده 0 برای یک رشته خالی یا 1 برای یک رشته غیر خالی. نتیجه این نوع uint8. این تابع همچنین برای ارریس کار می کند.

طول

بازگرداندن طول یک رشته در بایت (نه در شخصیت, و نه در نقاط کد). نتیجه این نوع uint64. این تابع همچنین برای ارریس کار می کند.

طول 8

بازگرداندن طول یک رشته در نقاط کد یونیکد (نه در شخصیت), فرض کنید که رشته شامل مجموعه ای از بایت است که متن کد گذاری شده را تشکیل می دهند. اگر این فرض ملاقات نکرده است, این گرداند برخی از نتیجه (این یک استثنا پرتاب نمی کند). نتیجه این نوع uint64.

_شروع مجدد

بازگرداندن طول یک رشته در نقاط کد یونیکد (نه در شخصیت), فرض کنید که رشته شامل مجموعه ای از بایت است که متن کد گذاری شده را تشکیل می دهند. اگر این فرض ملاقات نکرده است, این گرداند برخی از نتیجه (این یک استثنا پرتاب نمی کند). نتیجه این نوع uint64.

_شخصیت شناسی

بازگرداندن طول یک رشته در نقاط کد یونیکد (نه در شخصیت), فرض کنید که رشته شامل مجموعه ای از بایت است که متن کد گذاری شده را تشکیل می دهند. اگر این فرض ملاقات نکرده است, این گرداند برخی از نتیجه (این یک استثنا پرتاب نمی کند). نتیجه این نوع uint64.

پایین تر

تبدیل نمادهای اسکی لاتین در یک رشته به حروف کوچک.

بالارفتن

تبدیل نمادهای اسکی لاتین در یک رشته به حروف بزرگ.

لوراتف8

تبدیل یک رشته به حروف کوچک, فرض رشته شامل مجموعه ای از بایت که یک متن کد گذاری شده-8 را تشکیل می دهند. این زبان را تشخیص نمی دهد. بنابراین برای ترکیه نتیجه ممکن است دقیقا درست باشد. اگر طول توالی یونایتد-8 بایت برای مورد بالا و پایین تر از یک نقطه کد متفاوت است, نتیجه ممکن است برای این نقطه کد نادرست. اگر رشته شامل مجموعه ای از بایت است که سخن گفتن نیست-8, سپس رفتار تعریف نشده است.

یوتف8

تبدیل یک رشته به حروف بزرگ, فرض رشته شامل مجموعه ای از بایت که یک متن کد گذاری شده-8 را تشکیل می دهند. این زبان را تشخیص نمی دهد. بنابراین برای ترکیه نتیجه ممکن است دقیقا درست باشد. اگر طول توالی یونایتد-8 بایت برای مورد بالا و پایین تر از یک نقطه کد متفاوت است, نتیجه ممکن است برای این نقطه کد نادرست. اگر رشته شامل مجموعه ای از بایت است که سخن گفتن نیست-8, سپس رفتار تعریف نشده است.

اسوالدیدوتف8

بازده 1, اگر مجموعه ای از کلمه در ادامه متن معتبر است-8 کد گذاری, در غیر این صورت 0.

تولدیدوتف8

8 کاراکتر نامعتبر را جایگزین می کند <EFBFBD> اطلاعات دقیق همه در حال اجرا در یک ردیف شخصیت نامعتبر را به یک شخصیت جایگزین فرو ریخت.

toValidUTF8( input_string )

پارامترها:

  • input_string — Any set of bytes represented as the رشته شی نوع داده.

مقدار بازگشتی: معتبر یونایتد-8 رشته.

مثال

SELECT toValidUTF8('\x61\xF0\x80\x80\x80b')
┌─toValidUTF8('a<><61><EFBFBD><EFBFBD>b')─┐
│ a<>b                   │
└───────────────────────┘

تکرار

تکرار یک رشته را به عنوان چند بار به عنوان مشخص شده و concatenates تکراری ارزش به عنوان یک رشته است.

نحو

repeat(s, n)

پارامترها

مقدار بازگشتی

تک رشته ای که حاوی رشته است s تکرار n زمان. اگر n < 1, تابع رشته خالی می گرداند.

نوع: String.

مثال

پرسوجو:

SELECT repeat('abc', 10)

نتیجه:

┌─repeat('abc', 10)──────────────┐
│ abcabcabcabcabcabcabcabcabcabc │
└────────────────────────────────┘

معکوس

معکوس رشته (به عنوان یک دنباله از بایت).

معکوس کردن8

معکوس دنباله ای از نقاط کد یونیکد, فرض کنید که رشته شامل مجموعه ای از بایت به نمایندگی از یک متن گفته-8. در غیر این صورت, این کار چیز دیگری (این یک استثنا پرتاب نمی).

format(pattern, s0, s1, …)

قالب بندی الگوی ثابت با رشته ذکر شده در استدلال. pattern یک الگوی فرمت پایتون ساده شده است. رشته فرمت شامل “replacement fields” احاطه شده توسط پرانتز فرفری {}. هر چیزی که در پرانتز موجود نیست در نظر گرفته شده است متن تحت اللفظی است که بدون تغییر به خروجی کپی شده است. اگر شما نیاز به شامل یک شخصیت بند در متن تحت اللفظی, این را می توان با دو برابر فرار: {{ '{{' }} و {{ '}}' }}. نام فیلد می تواند اعداد (با شروع از صفر) یا خالی (سپس به عنوان شماره نتیجه درمان می شوند).

SELECT format('{1} {0} {1}', 'World', 'Hello')
┌─format('{1} {0} {1}', 'World', 'Hello')─┐
│ Hello World Hello                       │
└─────────────────────────────────────────┘
SELECT format('{} {}', 'Hello', 'World')
┌─format('{} {}', 'Hello', 'World')─┐
│ Hello World                       │
└───────────────────────────────────┘

الحاق

رشته های ذکر شده در استدلال بدون جدا کننده را تصدیق می کند.

نحو

concat(s1, s2, ...)

پارامترها

ارزش رشته نوع و یا رشته ثابت.

مقادیر بازگشتی

را برمی گرداند رشته ای که منجر به از الحاق استدلال.

اگر هر یک از مقادیر استدلال است NULL, concat بازگشت NULL.

مثال

پرسوجو:

SELECT concat('Hello, ', 'World!')

نتیجه:

┌─concat('Hello, ', 'World!')─┐
│ Hello, World!               │
└─────────────────────────────┘

همبسته

مثل الحاق تفاوت این است که شما نیاز به اطمینان حاصل شود که concat(s1, s2, ...) → sn این برای بهینه سازی گروه توسط استفاده می شود.

تابع به نام “injective” اگر همیشه نتیجه های مختلف برای مقادیر مختلف استدلال می گرداند. به عبارت دیگر: استدلال های مختلف هرگز نتیجه یکسان عملکرد.

نحو

concatAssumeInjective(s1, s2, ...)

پارامترها

ارزش رشته نوع و یا رشته ثابت.

مقادیر بازگشتی

را برمی گرداند رشته ای که منجر به از الحاق استدلال.

اگر هر یک از مقادیر استدلال است NULL, concatAssumeInjective بازگشت NULL.

مثال

جدول ورودی:

CREATE TABLE key_val(`key1` String, `key2` String, `value` UInt32) ENGINE = TinyLog;
INSERT INTO key_val VALUES ('Hello, ','World',1), ('Hello, ','World',2), ('Hello, ','World!',3), ('Hello',', World!',2);
SELECT * from key_val;
┌─key1────┬─key2─────┬─value─┐
│ Hello,  │ World    │     1 │
│ Hello,  │ World    │     2 │
│ Hello,  │ World!   │     3 │
│ Hello   │ , World! │     2 │
└─────────┴──────────┴───────┘

پرسوجو:

SELECT concat(key1, key2), sum(value) FROM key_val GROUP BY concatAssumeInjective(key1, key2)

نتیجه:

┌─concat(key1, key2)─┬─sum(value)─┐
│ Hello, World!      │          3 │
│ Hello, World!      │          2 │
│ Hello, World       │          3 │
└────────────────────┴────────────┘

زیر رشته(بازدید کنندگان, انحراف, طول), اواسط(بازدید کنندگان, انحراف, طول), عام (بازدید کنندگان, انحراف, طول)

بازگرداندن یک رشته شروع با بایت از offset شاخص این است length کلمه در ادامه متن طولانی. نمایه سازی شخصیت از یک شروع می شود (همانطور که در گذاشتن استاندارد). این offset و length استدلال باید ثابت باشد.

زیر بغل کردن 8(بازدید کنندگان, انحراف, طول)

همان substring, اما برای نقاط کد یونیکد. این نسخهها کار میکند با این فرض که رشته شامل مجموعه ای از بایت به نمایندگی از یک متن کد گذاری شده وزارت مخابرات 8. اگر این فرض ملاقات نکرده است, این گرداند برخی از نتیجه (این یک استثنا پرتاب نمی کند).

appendTrailingCharIfAbsent(s, c)

اگر s رشته غیر خالی است و حاوی نیست c شخصیت در پایان این برنامه c شخصیت به پایان.

تبدیل(بازدید کنندگان, از, به)

بازگرداندن رشته s که از رمزگذاری در تبدیل شد from به رمزگذاری در to.

کد زیر 64)

کدگذاریها s رشته به پایگاه64

کد زیر 64)

رمزگشایی پایگاه64-رشته کد گذاری شده s به رشته اصلی. در صورت شکست را افزایش می دهد یک استثنا.

تریباس64دسیدی)

شبیه به حالت کد باس64, اما در صورت خطا یک رشته خالی می شود بازگشت.

endsWith(s, پسوند)

بازگرداندن اینکه با پسوند مشخص شده پایان یابد. بازده 1 اگر رشته به پایان می رسد با پسوند مشخص, در غیر این صورت باز می گردد 0.

startsWith(str, پیشوند)

بازده 1 اینکه رشته با پیشوند مشخص شروع می شود, در غیر این صورت باز می گردد 0.

SELECT startsWith('Spider-Man', 'Spi');

مقادیر بازگشتی

  • 1, اگر رشته با پیشوند مشخص شروع می شود.
  • 0, اگر رشته با پیشوند مشخص شروع نشد.

مثال

پرسوجو:

SELECT startsWith('Hello, world!', 'He');

نتیجه:

┌─startsWith('Hello, world!', 'He')─┐
│                                 1 │
└───────────────────────────────────┘

تر و تمیز

حذف تمام شخصیت های مشخص شده از شروع یا پایان یک رشته. به طور پیش فرض حذف همه وقوع متوالی از فضای سفید مشترک (شخصیت اسکی 32) از هر دو به پایان می رسد از یک رشته.

نحو

trim([[LEADING|TRAILING|BOTH] trim_character FROM] input_string)

پارامترها

  • trim_character — specified characters for trim. رشته.
  • input_string — string for trim. رشته.

مقدار بازگشتی

یک رشته بدون پیشرو و (یا) انتهایی شخصیت مشخص شده است.

نوع: String.

مثال

پرسوجو:

SELECT trim(BOTH ' ()' FROM '(   Hello, world!   )')

نتیجه:

┌─trim(BOTH ' ()' FROM '(   Hello, world!   )')─┐
│ Hello, world!                                 │
└───────────────────────────────────────────────┘

trimLeft

حذف تمام رخدادهای متوالی از فضای سفید مشترک (شخصیت اسکی 32) از ابتدای یک رشته. آن را نمی کند, حذف انواع دیگر از کاراکترهای فضای سفید (برگه بدون شکستن فضا و غیره.).

نحو

trimLeft(input_string)

نام مستعار: ltrim(input_string).

پارامترها

  • input_string — string to trim. رشته.

مقدار بازگشتی

یک رشته بدون پیشرو فضاهای سفید مشترک.

نوع: String.

مثال

پرسوجو:

SELECT trimLeft('     Hello, world!     ')

نتیجه:

┌─trimLeft('     Hello, world!     ')─┐
│ Hello, world!                       │
└─────────────────────────────────────┘

trimRight

حذف همه متوالی تکرار مشترک فضای خالی (ascii شخصیت 32) از پایان یک رشته است. آن را نمی کند, حذف انواع دیگر از کاراکترهای فضای سفید (برگه بدون شکستن فضا و غیره.).

نحو

trimRight(input_string)

نام مستعار: rtrim(input_string).

پارامترها

  • input_string — string to trim. رشته.

مقدار بازگشتی

یک رشته بدون انتهایی فضاهای خالی مشترک.

نوع: String.

مثال

پرسوجو:

SELECT trimRight('     Hello, world!     ')

نتیجه:

┌─trimRight('     Hello, world!     ')─┐
│      Hello, world!                   │
└──────────────────────────────────────┘

اصلاح

حذف تمام رخدادهای متوالی از فضای سفید مشترک (شخصیت اسکی 32) از هر دو به پایان می رسد از یک رشته. این کار انواع دیگر از شخصیت های فضای سفید را حذف کنید (باریکه, فضای بدون استراحت, و غیره.).

نحو

trimBoth(input_string)

نام مستعار: trim(input_string).

پارامترها

  • input_string — string to trim. رشته.

مقدار بازگشتی

یک رشته بدون پیشرو و انتهایی فضاهای سفید مشترک.

نوع: String.

مثال

پرسوجو:

SELECT trimBoth('     Hello, world!     ')

نتیجه:

┌─trimBoth('     Hello, world!     ')─┐
│ Hello, world!                       │
└─────────────────────────────────────┘

CRC32(s)

بازگرداندن کنترلی از یک رشته, با استفاده از کروک-32-یی 802.3 چند جملهای و مقدار اولیه 0xffffffff هشدار داده می شود

نتیجه این نوع uint32.

CRC32IEEE(s)

را برمی گرداند کنترل از یک رشته, با استفاده از کروم-32-یی 802.3 چند جملهای.

نتیجه این نوع uint32.

CRC64(s)

بازده crc64 کنترلی از یک رشته با استفاده از crc-64-ecma چند جملهای.

نتیجه این نوع uint64.

مقاله اصلی