SQLite 文字列関数: REPLACE、SUBSTR、TRIM、ROUND
SQLite にはデフォルトで組み込み関数のリストが装備されています。 SQLite 図書館。 C 言語を使用して他のカスタム関数を追加し、コア関数を拡張することもできます。
以下のすべての例では、sqlite3.exe を実行し、サンプル データベースへの接続を次のように開く必要があることに注意してください。
ステップ1) このステップでは、
- マイコンピュータを開き、次のディレクトリに移動します。C:\sqlite" その後
- 開いた "sqlite3.exe"
ステップ2) データベースを開きます」チュートリアルSampleDB.db” を次のコマンドで実行します。
これで、任意のコマンドを実行する準備が整いました。 クエリー 次のセクションで使用されるクエリを試してください。
文字列の長さを求める SQLite
文字列の長さを調べるには、LENGTH(X) を使用します。X は文字列値です。 X が null 値の場合、length 関数は null 値を返します。
数値を指定して length 関数を使用して、数値の長さを取得することもできます。
例:
次の例では、次の値を使用して LENGTH 関数の構文を試します。
SELECT LENGTH('A string'), LENGTH(NULL), LENGTH(20), LENGTH(20.5);
これにより、次のものが得られます。
結果は以下のようになります。
- LENGTH('A string') は、文字列「A string」の長さである 8 を返します。
- LENGTH(NULL) は null を返します。
- 20 は 2 長さであるため、LENGTH(20) は 2 を返します。
- LENGTH(20.5) は 4 を返します。浮動小数点「.」は文字としてカウントされるため、数値の長さである 3 文字と、浮動小数点「.」の XNUMX 文字を加えた XNUMX 文字になります。
UPPER関数とLOWER関数で大文字と小文字を切り替える
UPPER(X) は同じ x 文字列を返しますが、すべての文字列文字が大文字で表されます。
LOWER(X) は同じ x 文字列を返しますが、すべての文字列文字を小さな文字で表します。
UPPER と LOWER に null 値を渡すと、null 値が返されます。
UPPER または LOWER に数値を渡すと、どちらも正確な数値を返します。
例:
SELECT UPPER('a string'), LOWER('A STRING'), UPPER(20), LOWER(20), UPPER(NULL), LOWER(NULL);
これにより、次のものが得られます。
結果は以下のようになります。
- UPPER('文字列') は文字列「」を返します。文字列「大文字表記」文字列"
- LOWER('A STRING') は文字列「」を返します。文字列「小文字表記」文字列"
- UPPER(20)、LOWER(20)は数値に影響を与えないため、同じ数値を返します。
- UPPER(NULL)、LOWER(NULL) は null 値を渡したため、null を返します。
SQLite SUBSTR関数
SUBSTR関数は、特定の位置から始まる特定の数の文字列を返します。この関数には、次のように3つのオペランドを渡すことができます。substr(x、y、z)” は以下のようになります。
- X は、解析する文字列リテラルまたは文字列列です。 リテラル値 (静的値) または列名を渡すことができます。この場合、値は列の値から読み取られます。
- Y は、そこから始まる文字列を減算する開始位置です。
- Z は、特定の位置 Y から開始して解析する文字数です。この数値はオプションであり、無視できます。この場合、 SQLite 位置 Y から始まる文字列を減算し、文字列の終わりを示します。
例:
次のクエリでは、SUBSTR 関数を使用して、生徒の名前の 4 番目の文字から始まる XNUMX 文字を取得します。
SELECT StudentName, SUBSTR(StudentName, 2, 4), SUBSTR(StudentName, 2) FROM Students;
これにより、次のものが得られます。
- SUBSTR(生徒名, 2, 4) 文字列の部分文字列「学生の名前” を4文字目から開始し、次のXNUMX文字を返します。
- ただし、関数内では SUBSTR(生徒名, 2) 返される文字の番号を指定しませんでした。そのためです。 SQLite 「」内の残りの文字をすべて返しました。学生の名前』をXNUMX位からスタート。
文字列の一部を変更する SQLite REPLACE関数
REPLACE は、別の文字列で発生した各文字列を文字列で置き換えるのに使用されます。
REPLACE(X, Y, Z) – X は入力文字列リテラルまたは列です。 Y は、文字列 Z で置き換える文字列です。文字列 Y が XNUMX つだけではなく出現するたびに Z に置き換えられることに注意してください。
例:
次のクエリでは、文字列「xx” と文字列”SQLite"
SELECT REPLACE('xx is very lightweight, xx is easy to learn', 'xx', 'SQLite');
これはあなたに与えます
- replace 関数はすべての文字列を置き換えました。xx” と文字列”SQLite"
- したがって、出力は次のようになります 「SQLite 非常に軽量で、 SQLite 学ぶのは簡単です。」
空白スペースをトリミングする SQLite TRIM機能
TRIM は、文字列の先頭または末尾から空白スペースを削除します。 文字列の途中にあるスペースは削除されず、先頭または末尾からのみ削除されます。
例:
次のクエリでは、TRIM 関数を使用して、文字列の先頭と末尾の空白を削除します。
連結演算子「||」は、文字列の末尾に余分な「;」を追加するために使用されていることに注意してください。黒いウィンドウで空のスペースが削除されたことを示します。
SELECT TRIM(' SQLite is easy to learn ') || ';';
これにより、次のものが得られます。
- 文字列の先頭と末尾から空白スペースが削除され、「 ; 」に置き換えられていることに注目してください。 ' 最後に。
絶対値の読み取り SQLite ABS機能
ABS 関数は数値の絶対値を返します。絶対値とは、正負の符号のない数値です。ABS(X) は、次のように X の値に応じて値を返します。
- X が数値の場合の X の絶対値。
- X が NULL 値の場合は NULL 値。
- X が文字列の場合は「0.0」値。
例:
次のクエリでは、ABS 関数を使用して、文字列、数値、および null 値の絶対値を取得しようとします。
SELECT ABS(-2), ABS(+2), ABS('a string'), ABS(null);
これにより、次のものが得られます。
結果は次のとおりです。
- ABS(-2)、ABS(+2) は、「-2」と「+2」の両方とも 2 が絶対値であるため、2 を返します。
- ABS('a string') は、数値ではなく文字列値を渡したので、「0.0」を返します。
- ABS(null) は、null 値を渡したので、null を返します。
ROUND関数を使用した値の丸め SQLite
小数とは、「20.5」、「8.65」のように、浮動小数点「.」が付いた数値です。浮動小数点の左側の部分を整数部、浮動小数点の右側の部分を小数部と呼びます。
整数とは、浮動小数点を含まない数値です。たとえば、「20」、「8」などです。
ROUND(X) は、小数値または列 X を整数のみに変換します。小数点の左側の部分である整数部分が返され、小数点の右側の数字はすべて削除されます。
例:
次のクエリでは、さまざまなオプションを使用して ROUND 関数を試します。
SELECT ROUND(12.4354354), ROUND(12.4354354, 2), ROUND(NULL), ROUND('a string');
これにより、次のものが得られます。
結果は以下のとおりです。
- ROUND(12.4354354) – 桁数を指定しなかったため、値「12」を返します。それで、 SQLite 小数部分をすべて削除しました。
- ROUND(12.4354354, 2) – 四捨五入に小数点の右から 12.44 桁だけを指定したため、値「2」を返します。
- ROUND(NULL) – null 値を渡したので、null を返します。
- ROUND('a string') – 文字列値を渡したので、値「0.0」を返します。
TYPEOF関数を使用した式のデータ型の検索
列の型またはリテラル値を調べたい場合は、関数 TYPEOF を使用します。
TYPEOF(X) 関数は、その名前から、式 X のデータ型を返します。この関数は、X のデータ型を示す文字列値を返します。この関数は、データ型に基づいて、「NULL」値であるかどうかを返します。実数、テキスト、整数、…など。
例:
次のクエリでは、さまざまな種類のリテラル値を使用して TYPEOF 関数を試します。
SELECT TYPEOF(null), TYPEOF(12), TYPEOF(12.5), TYPEOF('a string');
これにより、次のものが得られます。
返される結果は次のとおりです。
- TYPEOF(null) – null 値を渡したので、null を返します。
- TYPEOF(12) – 12 は整数であるため、整数を返します。
- TYPEOF(12.5) – 12.5 は実数であるため、REAL を返します。
- TYPEOF('a string') – 「a string」はテキストであるため、テキストを返します。
最後に挿入されたレコードを検索する SQLite LAST_INSERT_ROWID
SQLite すべてのテーブルのすべての行に整数キー (Id) を割り当てます。この番号は、これらの行を一意に識別するために使用されます。
テーブルに新しい行を INSERT すると、 SQLite ROWID に一意の値を割り当てます。
表に主キーが XNUMX つの列のみで宣言されており、その列のデータ型が INTEGER である場合、この列の値は ROWID として使用されます。
LAST_INSERT_ROWID() 関数は、データベース内の任意のテーブルに最後に挿入された行の ROW_ID を返します。オペランドは受け取らないことに注意してください。
例:
次の例では、関数 LAST_INSERT_ROWID() を次のように実行します。
SELECT LAST_INSERT_ROWID();
これにより、次のものが得られます。
- 現在のデータベース接続のどのテーブルにも行が挿入されていないため、LAST_INSERT_ROWID() は 0 を返します。
ここで、次のように、新しい生徒を挿入し、挿入ステートメントの後に関数 LAST_INSERT_ROWID() を再度実行してみましょう。
INSERT INTO Students VALUES(11, 'guru', 1, '1998-10-12'); SELECT LAST_INSERT_ROWID();
これにより、次のものが得られます。
- ID 11 の新しい学生を挿入すると、LAST_INSERT_ROWID() は最後に挿入された行 ID である 11 を返します。
バージョンの取得 SQLite ライブラリ
バージョンを取得するには SQLite ライブラリでは、SQLITE_VERSION() 関数を呼び出す必要があります。
例:
のバージョンを調べてみましょう SQLite 次のコマンドを実行して使用します。
SELECT SQLITE_VERSION();
これにより、次のものが得られます。
SQLITE_VERSION()は3.9.2を返します。これは SQLite 私たちは使っています。
ユーザー定義関数と集計ユーザー定義関数の作成
一部のユーザーにとって、 SQLite コア機能が制限されています。カスタム ニーズに合わせてカスタム関数を追加する必要がある場合があります。
SQLite ユーザー定義関数の作成はサポートされていません。他のデータベース管理システムとは異なり、ユーザー定義関数を作成することはできません。 SQLite 直接。
ただし、C#、C、PHPなどのプログラミング言語を使用して関数を作成することもできます。 C++ そしてその機能をコアに付加した SQLite の機能 SQLite ライブラリ自体、「」を使用sqlite3_create_function" 関数。 その後、それらをデータベースで再利用できます。
例:
次の例では、ユーザー定義関数を作成します。 C# プログラミング言語を選択して追加します SQLite 機能:
[SQLiteFunction(Name = "DoubleValue", Arguments = 1, FuncType = FunctionType.Scalar)] public class DoubleValue: SQLiteFunction { public override object Invoke(object[] args) { return args[0] * 2; } }
このコード スニペットは、 C# プログラミング言語; C# コードを使用して C# 関数を作成します。
関数名は「Double値」 2 つのパラメータを受け取り、その値を XNUMX 倍して返します。
C# がこの関数を自動的に追加することに注意してください。 SQLite。必要なのは、このコードをコンパイルして実行することだけです。次に、C# は同じ名前の関数をリストに追加します。 SQLite 機能。その後、この関数を次の場所で使用できます SQLite.
C#、C、PHPなどのプログラミング言語を使用しても同様です。 C++集計ユーザー定義関数を作成することもできます。これは、集計関数を拡張するために使用されます。 SQLite それらを使用してカスタム集計関数を作成します。
製品概要
- SQLite これまで見てきたように、データベースのテーブルと列の操作を簡単にする組み込み関数の包括的なセットが提供されます。これらの関数は、SQL クエリの式内の列やリテラル値に対して使用できます。
- 数値を指定して length 関数を使用して、数値の長さを取得することもできます。
- UPPER と LOWER に null 値を渡すと、null 値が返されます。
- SUBSTR 関数は、特定の位置から始まる特定の数の文字列を返します。
- REPLACE は、別の文字列で発生した各文字列を文字列で置き換えるのに使用されます。
- TRIM は、文字列の先頭または末尾から空白スペースを削除します。
- ABS 関数は数値の絶対値を返します。
- ROUND(X) は、小数値または列 X を整数のみに変換します。
- TYPEOF(X) 関数は、その名前からわかるように、式 X のデータ型を返します。
- LAST_INSERT_ROWID() 関数は、データベース内のテーブルに最後に挿入された行の ROW_ID を返します。