# توابع برای کار با رشته {#functions-for-working-with-strings}
## خالی {#empty}
بازده 1 برای یک رشته خالی و یا 0 برای یک رشته غیر خالی.
نتیجه این نوع uint8.
یک رشته در نظر گرفته شده است غیر خالی اگر شامل حداقل یک بایت, حتی اگر این یک فضا یا یک بایت پوچ است.
این تابع همچنین برای ارریس کار می کند.
## notEmpty {#notempty}
بازده 0 برای یک رشته خالی یا 1 برای یک رشته غیر خالی.
نتیجه این نوع uint8.
این تابع همچنین برای ارریس کار می کند.
## طول {#length}
بازگرداندن طول یک رشته در بایت (نه در شخصیت, و نه در نقاط کد).
نتیجه این نوع uint64.
این تابع همچنین برای ارریس کار می کند.
## طول 8 {#lengthutf8}
بازگرداندن طول یک رشته در نقاط کد یونیکد (نه در شخصیت), فرض کنید که رشته شامل مجموعه ای از بایت است که متن کد گذاری شده را تشکیل می دهند. اگر این فرض ملاقات نکرده است, این گرداند برخی از نتیجه (این یک استثنا پرتاب نمی کند).
نتیجه این نوع uint64.
## \_شروع مجدد {#char-length}
بازگرداندن طول یک رشته در نقاط کد یونیکد (نه در شخصیت), فرض کنید که رشته شامل مجموعه ای از بایت است که متن کد گذاری شده را تشکیل می دهند. اگر این فرض ملاقات نکرده است, این گرداند برخی از نتیجه (این یک استثنا پرتاب نمی کند).
نتیجه این نوع uint64.
## \_شخصیت شناسی {#character-length}
بازگرداندن طول یک رشته در نقاط کد یونیکد (نه در شخصیت), فرض کنید که رشته شامل مجموعه ای از بایت است که متن کد گذاری شده را تشکیل می دهند. اگر این فرض ملاقات نکرده است, این گرداند برخی از نتیجه (این یک استثنا پرتاب نمی کند).
نتیجه این نوع uint64.
## پایین تر {#lower}
تبدیل نمادهای اسکی لاتین در یک رشته به حروف کوچک.
## بالارفتن {#upper}
تبدیل نمادهای اسکی لاتین در یک رشته به حروف بزرگ.
## لوراتف8 {#lowerutf8}
تبدیل یک رشته به حروف کوچک, فرض رشته شامل مجموعه ای از بایت که یک متن کد گذاری شده-8 را تشکیل می دهند.
این زبان را تشخیص نمی دهد. بنابراین برای ترکیه نتیجه ممکن است دقیقا درست باشد.
اگر طول توالی یونایتد-8 بایت برای مورد بالا و پایین تر از یک نقطه کد متفاوت است, نتیجه ممکن است برای این نقطه کد نادرست.
اگر رشته شامل مجموعه ای از بایت است که سخن گفتن نیست-8, سپس رفتار تعریف نشده است.
## یوتف8 {#upperutf8}
تبدیل یک رشته به حروف بزرگ, فرض رشته شامل مجموعه ای از بایت که یک متن کد گذاری شده-8 را تشکیل می دهند.
این زبان را تشخیص نمی دهد. بنابراین برای ترکیه نتیجه ممکن است دقیقا درست باشد.
اگر طول توالی یونایتد-8 بایت برای مورد بالا و پایین تر از یک نقطه کد متفاوت است, نتیجه ممکن است برای این نقطه کد نادرست.
اگر رشته شامل مجموعه ای از بایت است که سخن گفتن نیست-8, سپس رفتار تعریف نشده است.
## اسوالدیدوتف8 {#isvalidutf8}
بازده 1, اگر مجموعه ای از کلمه در ادامه متن معتبر است-8 کد گذاری, در غیر این صورت 0.
## تولدیدوتف8 {#tovalidutf8}
8 کاراکتر نامعتبر را جایگزین می کند `<60>` اطلاعات دقیق همه در حال اجرا در یک ردیف شخصیت نامعتبر را به یک شخصیت جایگزین فرو ریخت.
تک رشته ای که حاوی رشته است `s` تکرار `n` زمان. اگر `n` \< 1, تابع رشته خالی می گرداند.
نوع: `String`.
**مثال**
پرسوجو:
``` sql
SELECT repeat('abc', 10)
```
نتیجه:
``` text
┌─repeat('abc', 10)──────────────┐
│ abcabcabcabcabcabcabcabcabcabc │
└────────────────────────────────┘
```
## معکوس {#reverse}
معکوس رشته (به عنوان یک دنباله از بایت).
## معکوس کردن8 {#reverseutf8}
معکوس دنباله ای از نقاط کد یونیکد, فرض کنید که رشته شامل مجموعه ای از بایت به نمایندگی از یک متن گفته-8. در غیر این صورت, این کار چیز دیگری (این یک استثنا پرتاب نمی).
## format(pattern, s0, s1, …) {#format}
قالب بندی الگوی ثابت با رشته ذکر شده در استدلال. `pattern` یک الگوی فرمت پایتون ساده شده است. رشته فرمت شامل “replacement fields” احاطه شده توسط پرانتز فرفری `{}`. هر چیزی که در پرانتز موجود نیست در نظر گرفته شده است متن تحت اللفظی است که بدون تغییر به خروجی کپی شده است. اگر شما نیاز به شامل یک شخصیت بند در متن تحت اللفظی, این را می توان با دو برابر فرار: `{{ '{{' }}` و `{{ '}}' }}`. نام فیلد می تواند اعداد (با شروع از صفر) یا خالی (سپس به عنوان شماره نتیجه درمان می شوند).
``` sql
SELECT format('{1} {0} {1}', 'World', 'Hello')
```
``` text
┌─format('{1} {0} {1}', 'World', 'Hello')─┐
│ Hello World Hello │
└─────────────────────────────────────────┘
```
``` sql
SELECT format('{} {}', 'Hello', 'World')
```
``` text
┌─format('{} {}', 'Hello', 'World')─┐
│ Hello World │
└───────────────────────────────────┘
```
## الحاق {#concat}
رشته های ذکر شده در استدلال بدون جدا کننده را تصدیق می کند.
**نحو**
``` sql
concat(s1, s2, ...)
```
**پارامترها**
ارزش رشته نوع و یا رشته ثابت.
**مقادیر بازگشتی**
را برمی گرداند رشته ای که منجر به از الحاق استدلال.
اگر هر یک از مقادیر استدلال است `NULL`, `concat` بازگشت `NULL`.
**مثال**
پرسوجو:
``` sql
SELECT concat('Hello, ', 'World!')
```
نتیجه:
``` text
┌─concat('Hello, ', 'World!')─┐
│ Hello, World! │
└─────────────────────────────┘
```
## همبسته {#concatassumeinjective}
مثل [الحاق](#concat) تفاوت این است که شما نیاز به اطمینان حاصل شود که `concat(s1, s2, ...) → sn` این برای بهینه سازی گروه توسط استفاده می شود.
تابع به نام “injective” اگر همیشه نتیجه های مختلف برای مقادیر مختلف استدلال می گرداند. به عبارت دیگر: استدلال های مختلف هرگز نتیجه یکسان عملکرد.
**نحو**
``` sql
concatAssumeInjective(s1, s2, ...)
```
**پارامترها**
ارزش رشته نوع و یا رشته ثابت.
**مقادیر بازگشتی**
را برمی گرداند رشته ای که منجر به از الحاق استدلال.
اگر هر یک از مقادیر استدلال است `NULL`, `concatAssumeInjective` بازگشت `NULL`.
SELECT concat(key1, key2), sum(value) FROM key_val GROUP BY concatAssumeInjective(key1, key2)
```
نتیجه:
``` text
┌─concat(key1, key2)─┬─sum(value)─┐
│ Hello, World! │ 3 │
│ Hello, World! │ 2 │
│ Hello, World │ 3 │
└────────────────────┴────────────┘
```
## زیر رشته(بازدید کنندگان, انحراف, طول), اواسط(بازدید کنندگان, انحراف, طول), عام (بازدید کنندگان, انحراف, طول) {#substring}
بازگرداندن یک رشته شروع با بایت از ‘offset’ شاخص این است ‘length’ کلمه در ادامه متن طولانی. نمایه سازی شخصیت از یک شروع می شود (همانطور که در گذاشتن استاندارد). این ‘offset’ و ‘length’ استدلال باید ثابت باشد.
## زیر بغل کردن 8(بازدید کنندگان, انحراف, طول) {#substringutf8}
همان ‘substring’, اما برای نقاط کد یونیکد. این نسخهها کار میکند با این فرض که رشته شامل مجموعه ای از بایت به نمایندگی از یک متن کد گذاری شده وزارت مخابرات 8. اگر این فرض ملاقات نکرده است, این گرداند برخی از نتیجه (این یک استثنا پرتاب نمی کند).
## appendTrailingCharIfAbsent(s, c) {#appendtrailingcharifabsent}
اگر ‘s’ رشته غیر خالی است و حاوی نیست ‘c’ شخصیت در پایان این برنامه ‘c’ شخصیت به پایان.
یک رشته بدون پیشرو و (یا) انتهایی شخصیت مشخص شده است.
نوع: `String`.
**مثال**
پرسوجو:
``` sql
SELECT trim(BOTH ' ()' FROM '( Hello, world! )')
```
نتیجه:
``` text
┌─trim(BOTH ' ()' FROM '( Hello, world! )')─┐
│ Hello, world! │
└───────────────────────────────────────────────┘
```
## trimLeft {#trimleft}
حذف تمام رخدادهای متوالی از فضای سفید مشترک (شخصیت اسکی 32) از ابتدای یک رشته. آن را نمی کند, حذف انواع دیگر از کاراکترهای فضای سفید (برگه بدون شکستن فضا و غیره.).
حذف همه متوالی تکرار مشترک فضای خالی (ascii شخصیت 32) از پایان یک رشته است. آن را نمی کند, حذف انواع دیگر از کاراکترهای فضای سفید (برگه بدون شکستن فضا و غیره.).
حذف تمام رخدادهای متوالی از فضای سفید مشترک (شخصیت اسکی 32) از هر دو به پایان می رسد از یک رشته. این کار انواع دیگر از شخصیت های فضای سفید را حذف کنید (باریکه, فضای بدون استراحت, و غیره.).