SQLite Dize Fonksiyonları: REPLACE, SUBSTR, TRIM, LENGTH

⚡ Akıllı Özet

SQLite LENGTH, SUBSTR, REPLACE ve TRIM gibi dize işlevleri, sorguların içinde metni doğrudan işlerken, ABS ve ROUND gibi sayısal yardımcılar, ayrıca TYPEOF ve sürüm yardımcıları, bu işlevlerin kapsamını genişletir. SQLite Kütüphane performans sergiliyor.

  • 📏 uzunluk: LENGTH fonksiyonu bir dizenin kaç karakter içerdiğini sayar ve kendisine iletilen değer null olduğunda null döndürür.
  • 🔠 Büyük/küçük harf dönüşümü: UPPER ve LOWER komutları, sayıları ve boş değerleri değiştirmeden, bir metin dizisini büyük veya küçük harflere dönüştürür.
  • ✂️ Alt dizeler: SUBSTR extracREPLACE, seçilen bir konumdan itibaren karakterleri kaldırırken, REPLACE ise bir alt dizenin her geçtiği yeri başka bir alt dizeyle değiştirir.
  • 🧮 Sayısal yardımcılar: ABS, işareti olmadan bir değer döndürür ve ROUND, ondalık sayıyı istediğiniz basamak sayısına kısaltır.
  • 🔍 Muayene: TYPEOF, bir ifadenin veri türünü bildirir ve LAST_INSERT_ROWID, en son eklenen satırın kimliğini döndürür.
  • 🤖 Yapay zeka yardımı: GitHub Copilot ve yapay zeka destekli metinden SQL'e dönüştürme araçlarının iskeleti SQLite Fonksiyon sorguları, özel C fonksiyonları ise yerleşik kütüphaneyi genişletir.

SQLite Dize İşlevleri

Nasıl kurulur SQLite ve Dize Fonksiyonu Sorgularını Çalıştır

SQLite varsayılan olarak yerleşik işlevlerin bir listesiyle donatılmıştır. SQLite kütüphane. Temel işlevleri genişletmek için C dilini kullanarak başka bazı özel işlevler de ekleyebilirsiniz.

Aşağıdaki örneklerin tamamı için sqlite3.exe dosyasını çalıştırmanız ve örnek veritabanına aşağıdaki gibi bir bağlantı açmanız gerektiğini unutmayın:

) 1 Adım Bu adımda, Bilgisayarım'ı açın ve "C:\sqlite" dizinine gidin, ardından "sqlite3.exe" dosyasını açın:

SQLite Dize İşlevleri

) 2 Adım Aşağıdaki komutu kullanarak “TutorialsSampleDB.db” veritabanını açın:

SQLite Dize İşlevleri

Artık herhangi birini çalıştırmaya hazırsınız sorgu ve aşağıdaki bölümlerde kullanılan sorguları deneyin.

Bir Dizenin UZUNLUĞUNU Bulma SQLite

Bir dizenin uzunluğunu bulmak için X'in bir dize değeri olduğu UZUNLUK(X)'u kullanın. X boş bir değerse uzunluk işlevi boş bir değer döndürür.

Sayısal değerin uzunluğunu elde etmek için uzunluk işlevini sayısal değerlerle de kullanabilirsiniz.

Örnek:

Aşağıdaki örnekte LENGTH fonksiyonunun sözdizimini aşağıdaki değerlerle deneyeceğiz:

SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);

Bu size şunları sağlayacaktır:

Bir Dizenin UZUNLUĞUNU Bulma SQLite

Sonuç şu şekilde:

  • LENGTH('A string'), “A string” stringinin uzunluğu olan 8 değerini döndürür.
  • LENGTH(NULL) null değerini döndürür.
  • LENGTH(20), 2 değerini döndürür çünkü 20, 2 uzunluk uzunluğundadır.
  • LENGTH(20.5) 4 değerini döndürür; Kayan nokta “.” bir karakter olarak sayılır, dolayısıyla dört karakteriniz olur; 3 karakter sayıların uzunluğudur. Ayrıca kayan nokta “.” için bir karakter daha.

UPPER Fonksiyonu ve LOWER Fonksiyonu ile harf değişimi

UPPER(X) aynı x dizesini döndürecektir, ancak tüm dize karakterlerini büyük karakterlerle temsil edecektir.

LOWER(X) aynı x dizesini döndürür, ancak tüm dize karakterlerini küçük karakterlerle temsil eder.

UPPER ve LOWER, onlara boş bir değer iletirseniz boş değerler döndürür.

Sayısal değerleri UPPER veya LOWER'a iletirseniz her ikisi de tam sayısal değeri döndürür.

Örnek:

SELECT UPPER('a string'), LOWER('A STRING'), UPPER(20), LOWER(20), UPPER(NULL), LOWER(NULL);

Bu size şunları sağlayacaktır:

UPPER ve LOWER fonksiyonlarına örnek SQLite

Sonuç şu şekilde:

  • UPPER('a string') ifadesi, "a string" dizesini büyük harflerle "A STRING" olarak döndürür.
  • LOWER('A STRING') ifadesi, "A STRING" dizesini küçük harflerle "a string" olarak döndürür.
  • UPPER(20), LOWER(20), sayılar üzerinde herhangi bir etkisi olmadığından aynı sayıyı döndürür.
  • UPPER(NULL), LOWER(NULL), onlara null değeri ilettiğimiz için null değerini döndürür.

SQLite SUBSTR İşlevi

SUBSTR fonksiyonu, belirli bir konumdan başlayarak belirli sayıda dize döndürür. Fonksiyona şu şekilde üç işlenen geçirebilirsiniz: “SUBSTR(X,Y,Z)”:

  • X, dize değişmezi veya ayrıştırılacak dize sütunudur. Bir değişmez değer (statik değer) veya bir sütun adı iletebilirsiniz; bu durumda değer, sütunun değerlerinden okunacaktır.
  • Y, egzersiz için başlangıç ​​pozisyonudur.tracİpten başlayarak.
  • Z, belirli bir Y konumundan başlayarak ayrıştırılacak karakter sayısıdır. Bu sayı isteğe bağlıdır, onu yok sayabilirsiniz ve bu durumda, SQLite eskitracY konumundan başlayarak ipin sonuna kadar olan mesafeyi ölçün.

Örnek:

Aşağıdaki sorguda, öğrencilerin isimlerinin ikinci karakterinden başlayarak 4 karakteri almak için SUBSTR fonksiyonunu kullanacağız:

SELECT StudentName, SUBSTR(StudentName, 2, 4), SUBSTR(StudentName, 2)
FROM Students;

Bu size şunları sağlayacaktır:

SUBSTR işlevi örneği SQLite

  • SUBSTR(StudentName, 2, 4) “StudentName” dizesini ikinci karakterden başlayarak alt dizeye ayırır ve sonraki 4 karakteri döndürür.
  • Ancak, SUBSTR(StudentName, 2) fonksiyonunda döndürülecek karakter sayısı belirtmedik, bu yüzden SQLite “Öğrenci Adı” metnindeki ikinci karakterden başlayarak kalan tüm karakterleri döndürdü.

Bir String'in bölümlerini değiştirme SQLite DEĞİŞTİRME İşlevi

REPLACE, başka bir dizede oluşan her dizeyi bir dizeyle değiştirmek için kullanılır.

REPLACE(X, Y, Z) – X, giriş dizesi değişmez değeri veya sütunudur. Y, Z dizesiyle değiştirilecek dizedir. Y dizesinin yalnızca bir tanesini değil, herhangi bir oluşumunu Z ile değiştireceğini unutmayın.

Örnek:

Aşağıdaki sorguda, "xx" dizesinin tüm geçişlerini " " dizesiyle değiştireceğiz.SQLite":

SELECT REPLACE('xx is very lightweight, xx is easy to learn', 'xx', 'SQLite');

Bu verecektir

DEĞİŞTİR işlevi örneği SQLite

  • Değiştirme fonksiyonu, tüm "xx" dizelerini " " dizesiyle değiştirdi.SQLite".
  • Dolayısıyla çıktı şu şekilde olacaktır:SQLite çok hafiftir, SQLite öğrenmesi kolaydır”.

Boş alanları şununla kırpma: SQLite TRIM İşlevi

TRIM, dizenin başındaki veya sonundaki boşlukları kaldırır. Dizenin ortasındaki boşlukları yalnızca başından veya sonundan kaldırmaz.

Örnek:

Aşağıdaki sorguda, dizenin başındaki ve sonundaki boşlukları kaldırmak için TRIM fonksiyonunu kullanacağız.

Birleştirme operatörünün “||” olduğunu unutmayın. Fazladan bir “;” eklemek için kullanılır dizenin sonuna kadar. Siyah penceredeki boş alanların kaldırıldığını göstermek için.

SELECT TRIM('      SQLite is easy to learn        ') || ';';

Bu size şunları sağlayacaktır:

TRIM işlevi örneği SQLite

Dizenin başından ve sonundaki boşlukların nasıl kaldırıldığına ve ' ; ile değiştirildiğine dikkat edin. ' sonunda.

Mutlak Değerleri Okumak SQLite ABS İşlevi

ABS fonksiyonu, sayısal bir değerin mutlak değerini döndürür. Mutlak değer, herhangi bir pozitif veya negatif işaret olmadan sayısal değerdir. ABS(X), X değerine bağlı olarak aşağıdaki gibi bir değer döndürür:

  • X sayısal bir değerse X'in mutlak değeri.
  • X boş bir değerse NULL değeri.
  • X bir dize ise “0.0” değeri.

Örnek:

Aşağıdaki sorguda ABS fonksiyonunu kullanarak bir dizenin, bir sayının ve bir boş değerin mutlak değerini almaya çalışacağız:

SELECT ABS(-2), ABS(+2), ABS('a string'), ABS(null);

Bu size şunları sağlayacaktır:

ABS fonksiyonu örneği SQLite

Sonuçlar şöyle:

  • ABS(-2), ABS(+2) 2 değerini döndürür çünkü 2 hem "-2" hem de "+2" için mutlak değerdir.
  • ABS('a string'), sayısal bir değer değil, bir dize değeri ilettiğiniz için “0.0” değerini döndürür.
  • ABS(null), null değerini ilettiğiniz için null değerini döndürür.

ROUND Fonksiyonu ile değerleri yuvarlama SQLite

Ondalık sayılar, kayan noktalı “.” olan sayılardır. üzerinde örneğin “20.5”, “8.65”. Kayan noktanın solundaki kısma tamsayı kısmı, kayan noktanın sağındaki kısma ise ondalık kısım denir.

Tamsayı sayılar, üzerinde kayan nokta bulunmayan sayılardır. Örneğin “20”, “8”.

YUVARLAK(X), ondalık değerleri veya X sütunlarını yalnızca tam sayı sayılarına dönüştürür. Ondalık virgülün solundaki tam sayı kısmı döndürülecek ve virgülün sağındaki tüm rakamlar kaldırılacaktır.

Örnek:

Aşağıdaki sorguda ROUND fonksiyonunu farklı seçeneklerle deneyeceğiz:

SELECT ROUND(12.4354354), ROUND(12.4354354, 2), ROUND(NULL), ROUND('a string');

Bu size şunları sağlayacaktır:

YUVARLAK işlevi örneği SQLite

Sonuç şu şekilde:

  • YUVARLAK(12.4354354) – basamak sayısını belirtmediğiniz için “12” değerini döndürür. Bu yüzden, SQLite ondalık kısmın tamamı kaldırıldı.
  • YUVARLAK(12.4354354, 2) – “12.44” değerini döndürür, çünkü yuvarlamak için yalnızca 2 basamak belirttiniz; bunlar, ondalık ayırıcının sağındaki iki basamaktır.
  • ROUND(NULL) – ona null bir değer ilettiğiniz için null değerini döndürür.
  • YUVARLAK('bir dize') – ona bir dize değeri ilettiğiniz için “0.0” değerini döndürür.

TYPEOF Fonksiyonu ile ifadenin veri tipini bulma

Bir sütunun türünü veya değişmez değeri bulmak istiyorsanız, bunu yapmak için TYPEOF işlevini kullanabilirsiniz.

TYPEOF(X) fonksiyonu, isminden yola çıkarak, X ifadesinin veri tipini döndürür. X'in veri tipini belirten bir string değeri döndürür. Veri tiplerine göre değeri, ister “NULL” olsun, ister “NULL” olsun, gerçek, metin, tamsayı,…, vb.

Örnek:

Aşağıdaki sorguda TYPEOF fonksiyonunu farklı tipteki sabit değerlerle deneyeceğiz:

SELECT TYPEOF(null), TYPEOF(12), TYPEOF(12.5), TYPEOF('a string');

Bu size şunları sağlayacaktır:

TYPEOF işlevi örneği SQLite

Dönen sonuçlar şu şekildedir:

  • TYPEOF(null) – ona null bir değer ilettiğiniz için null değerini döndürür.
  • TYPEOF(12) – 12 bir tamsayı olduğundan bir tamsayı döndürür.
  • TYPEOF(12.5) – 12.5 gerçek bir sayı olduğundan REAL değerini döndürür.
  • TYPEOF('bir dize') – “bir dize” bir metin olduğundan metni döndürür.

En son eklenen kaydı bulma SQLite LAST_INSERT_ROWID

SQLite tüm tablolardaki tüm satırlara bir tamsayı anahtarı (Id) atar. Bu sayı, bu satırları benzersiz şekilde tanımlamak için kullanılır.

Bir tabloya yeni bir satır eklediğinizde, SQLite satır kimliğine benzersiz bir değer atayacaktır.

Tablonun yalnızca bir sütunda tanımlanmış bir birincil anahtarı varsa ve bu sütun INTEGER veri türündeyse, bu sütun değeri satır kimliği olarak kullanılacaktır.

LAST_INSERT_ROWID() işlevi, veritabanındaki herhangi bir tabloya eklenen son satırın ROW_ID'sini döndürür. Herhangi bir işlenen almadığını unutmayın.

Örnek:

Aşağıdaki örnekte LAST_INSERT_ROWID() fonksiyonunu şu şekilde çalıştıracağız:

SELECT LAST_INSERT_ROWID();

Bu size şunları sağlayacaktır:

LAST_INSERT_ROWID işlevi örneği SQLite

LAST_INSERT_ROWID() işlevi 0 değerini döndürür çünkü geçerli veritabanı bağlantısındaki hiçbir tabloya satır eklenmemiştir.

Şimdi yeni bir öğrenci ekleyelim ve insert deyiminden sonra LAST_INSERT_ROWID() fonksiyonunu tekrar çalıştıralım, şu şekilde:

INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12');
SELECT LAST_INSERT_ROWID();

Bu size şunları sağlayacaktır:

LAST_INSERT_ROWID işlevi örneği SQLite

Kimliği 11 olan yeni bir öğrenci ekledikten sonra LAST_INSERT_ROWID() işlevi, eklenen son satır kimliği olan 11'i döndürecektir.

Sürümünüzü alınıyor SQLite kütüphane

Sürümünüzü almak için SQLite Kütüphaneyi kullanmak için SQLITE_VERSION() fonksiyonunu çağırmanız gerekiyor.

Örnek:

Versiyonunun ne olduğunu öğrenelim. SQLite Aşağıdaki komutu çalıştırarak kullanıyoruz:

SELECT SQLITE_VERSION();

Bu size şunları sağlayacaktır:

Sürümünüzü almak için örnek SQLite kütüphane

SQLITE_VERSION(), sürümü olan 3.9.2'yi döndürür SQLite kullanıyoruz.

Kullanıcı tanımlı işlevler oluşturma ve kullanıcı tanımlı işlevleri toplama

Bazı kullanıcılar için, SQLite temel işlevler sınırlıdır. Özel ihtiyaçları için özel işlevler eklemeleri gerekebilir.

SQLite kullanıcı tanımlı işlevler oluşturmayı desteklemez. Diğer veritabanı yönetim sistemlerinden farklı olarak kullanıcı tanımlı işlevler oluşturamazsınız. SQLite direkt olarak.

Ancak, aşağıdaki gibi programlama dilleri kullanarak bir fonksiyon oluşturabilirsiniz. C#C, PHP veya C++ ve bu işlevi çekirdeğe ekledim SQLite içindeki fonksiyonlar SQLite “sqlite3_create_function” fonksiyonunu kullanarak kütüphanenin kendisini oluşturabilirsiniz. Daha sonra bunları veritabanınızda yeniden kullanabilirsiniz.

Örnek:

Aşağıdaki örnekte, C# programlama dilini kullanarak kullanıcı tanımlı bir fonksiyon oluşturacağız ve bunu ekleyeceğiz. SQLite fonksiyonlar:

[SQLiteFunction(Name = "DoubleValue", Arguments = 1, FuncType = FunctionType.Scalar)]
public class DoubleValue: SQLiteFunction
{
    public override object Invoke(object[] args)
    {
        return args[0] * 2;
    }
}

Bu kod pasajı şu şekilde yazılmıştır: C# Programlama Dili; C# kodunu kullanarak bir C# işlevi oluşturur.

İşlev adı şu olacaktır: “Double"Value" fonksiyonu tek bir parametre alır ve bu parametrenin değerini 2 ile çarparak döndürür.

C#'ın bu işlevi otomatik olarak eklediğini unutmayın. SQLite. Tek ihtiyacınız olan bu kodu derleyip çalıştırmak. Daha sonra C# aynı isimdeki fonksiyonu listeye ekleyecektir. SQLite işlevler. Daha sonra bu işlevi kullanabilirsiniz. SQLite.

Aynı şekilde C#, C, PHP veya gibi programlama dillerini kullanma C++ile toplu kullanıcı tanımlı işlevler de oluşturabilirsiniz. Toplama işlevlerini genişletmek için kullanılırlar. SQLite ve bunları özel toplama işlevleri oluşturmak için kullanın.

SSS

LENGTH, UPPER ve ROUND gibi skalar fonksiyonlar her satır için bir kez çalışır ve her biri tek bir değer döndürür. COUNT, SUM ve GROUP_CONCAT gibi toplama fonksiyonları ise birçok satırı birlikte işler ve tüm grup için tek bir birleştirilmiş sonuç döndürür.

SQLite || operatörü ile dizeleri birleştirir, örneğin 'a' || 'b'. Daha yeni sürümler ayrıca concat() ve concat_ws() skalar fonksiyonlarını eklerken, group_concat() birçok satırdaki değerleri tek bir sınırlayıcı karakterle ayrılmış dizede birleştirir.

Evet. SQLite DATE, TIME, DATETIME, JULIANDAY ve STRFTIME fonksiyonları DATE, TIME, DATETIME, JULIANDAY ve STRFTIME fonksiyonlarını sağlar. Bu fonksiyonlar metinden, Unix zaman damgalarından veya özel 'şimdi' değerinden tarihleri ​​biçimlendirir ve hesaplar. SQLite Tarihleri ​​belirli bir tür yerine TEXT, REAL veya INTEGER olarak saklar.

Varsayılan olarak, UPPER ve LOWER komutları yalnızca A'dan Z'ye kadar olan ASCII harflerini değiştirir, bu nedenle aksanlı veya Latin olmayan karakterler değişmeden kalır. Tam Unicode büyük/küçük harf dönüşümü için ICU uzantısının derlenmesi gerekir. SQLiteBu özellik, varsayılan derlemelerin çok azında bulunur.

X dizesi içindeki Y alt dizesinin 1'den başlayarak ilk konumunu döndüren INSTR(X, Y) fonksiyonunu kullanın. Alt dize bulunmadığında 0 döndürür. INSTR'yi SUBSTR ile birlikte kullanarak örnek verebilirsiniz.tracEşleşen karakterden sonra gelen metin.

Bir fonksiyon null değer döndürdüğünde varsayılan bir değerle değiştirmek için ifadeyi IFNULL(X, fallback) veya COALESCE(X, fallback) içine alın. COALESCE birden fazla argüman alır ve null olmayan ilk değeri döndürür; bu, birçok sütunun boş olabileceği durumlarda yardımcı olur.

Evet. GitHub Yardımcı Pilotu Yorum veya tablo adından LENGTH, SUBSTR, REPLACE ve ROUND fonksiyon çağrılarını önerir ve C veya C# dilinde kullanıcı tanımlı fonksiyon kodu taslağı oluşturur. Sütun adları uydurabileceği için çıktısını her zaman şemanızla karşılaştırın.

Evet. Yapay zekâ destekli metinden SQL'e dönüştürme asistanları, düz dildeki istekleri şu hale dönüştürür: SQLite TRIM ve REPLACE gibi dize işlevlerini kullanan sorgular, prototiplemeyi hızlandırır.pingAncak, makine öğrenimi modelleri bazen hatalı mantık üretebileceğinden, oluşturulan SQL kodunu verilerinizle karşılaştırmanız gerekir.

Bu yazıyı şu şekilde özetleyin: