Dize işlevlerinin listesi

Tarih ve saatten daha fazla işlev - yalnızca Dize türü. SQL'de hangisi CHAR(n) ve VARCHAR(n) türleri tarafından verilir. Bunlardan en popülerlerini hatırlayalım:

İşlev Tanım
1 UZUNLUK(str) Geçirilen dizenin uzunluğunu bayt cinsinden döndürür
2 CHAR_LENGTH(str) Geçen dizenin uzunluğunu karakter cinsinden döndürür
3 BUL(altstr,str), indexOf() yöntemine benzer bir dizede bir alt dize arar
4 BULUN(altstr,str,konum) Konumdan başlayan bir dizgede bir alt dizgi arar
5 BİRLEŞTİR(str1,str2,...) Birden çok satırı birleştirir
6 ALT DİZGİ(), ALT DİZGİ() Bir dizi karakter tarafından verilen bir alt dize döndürür
7 ALT(str) Bir dizeyi küçük harfe dönüştürür
8 ÜST(str) Bir dizeyi büyük harfe dönüştürür
9 YER DEĞİŞTİRMEK() Bir dizedeki bir alt dizeyi değiştirir
10 KİBRİT() Bir dizenin belirli bir kalıpla eşleşip eşleşmediğini kontrol eder
on bir KESME(str) Bir dizenin başındaki ve sonundaki boş karakterleri kırpar
12 LTRIM(str) Bir dizenin başındaki boş karakterleri kırpar
13 RTRIM(str) Bir dizenin sonundaki boş karakterleri kırpar
14 TO_BASE64(str) Bir diziyi Base64'e dönüştürür
15 FROM_BASE64(str) Base64'ten bir dize dönüştürür

İşlevleri, onlarla nasıl çalışılacağını daha kolay anlayabilmek için kasıtlı olarak küçük gruplar halinde gruplandırdım. Aşağıda her gruptan bir işlevi ele alacağız. Dizelerle çalışmaya yönelik işlevlerin tam listesini resmi belgelerde bulabilirsiniz .

Dizeyi dönüştürelim

Önce bir diziyi biraz farklı bir biçime dönüştüren en basit işlevlerle ilgilenelim. Örneğin, bir dizeyi büyük ve küçük harfe dönüştürün. Genel olarak, davranışları Java dilindeki aynı işlevlere benzer.

Bu yüzden sadece birkaç örnekle bir tablo vereceğim.

# Rica etmek Sonuç
1 UZUNLUĞU SEÇİN ('metin') 4
2 UZUNLUĞU SEÇİN ('Merhaba') 12
3 AŞAĞI SEÇ ('Merhaba') Merhaba
4 ÜST SEÇ ('Merhaba') MERHABA
5 SUBSTR SEÇİN ('Merhaba', 2, 3) nehir
6 SUBSTR SEÇİN ('Merhaba, nasılsın?', 8) Nasılsın?

İşlevler, tıpkı JDK'daki benzerleri gibi beklendiği gibi çalışır.

Tek uyarı: ilk satırda sonuç 8 değil 4'tür. Mesele şu ki, Latin karakterlerini kodlama isteğinde 1 bayt (ASCII kodlaması) kullanılıyor . Ancak veritabanındaki verilerle çalışıyorsanız, dizenin uzunluğu veritabanı kodlama ayarlarına bağlı olacaktır . Veritabanı ile çalışırken birçok sürprizle karşılaşacaksınız :)

Dizelerle karmaşık eylemler

Dizelerle çalışırken daha karmaşık şeylere bakalım. Ne bulursun...

Görev tablosundaki görevleri görüntüleyelim ve görevin son tarihi geçtiyse, görev açıklamasına EXPIRED kelimesini ekleyin!

Kulağa ilginç geliyor. Henüz karmaşık koşulları öğrenmemiş olsak da, görevi biraz basitleştirelim. Geçmiş görevlerin bir listesini görüntüleyecek bir sorgu yazalım, ancak başlığa "SÜRE DOLDU!" kelimesini eklediğinizden emin olun. .

Bunu yapmak için CONCAT işlevini kullanmamız gerekecek:

   SELECT CONCAT( 'EXPIRED! ', name) FROM task 
   WHERE deadline < CURDATE() 

Bu sorgunun sonucu şöyle olacaktır:

concat('SÜRESİ DOLDU! ', isim)
GÜNÜ GEÇMİŞ! Ön uçtaki bir hatayı düzeltin

Öneri. Verileri biraz farklı bir forma dönüştürmeniz gerekiyorsa, bu Java kodu düzeyinde de yapılabilir. Ancak SQL sunucu tarafı dize işlevlerini (WHERE içinde) kullanmak istiyorsanız, o zaman kesinlikle onlarsız yapamazsınız.