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.
GO TO FULL VERSION