文字列関数のリスト
日付と時刻よりも多くの関数 - String 型のみ。SQL では、CHAR(n) および VARCHAR(n) 型によって指定されます。その中で最も人気のあるものを思い出してみましょう。
関数 | 説明 | |
---|---|---|
1 | 長さ(長さ) | 渡された文字列の長さをバイト単位で返します。 |
2 | CHAR_LENGTH(文字列) | 渡された文字列の長さを文字で返します。 |
3 | LOCATE(部分文字列,文字列), | IndexOf() メソッドと同様に、文字列内の部分文字列を検索します。 |
4 | LOCATE(部分文字列,文字列,位置) | pos で始まる文字列内の部分文字列を検索します |
5 | CONCAT(str1,str2,...) | 複数の行を連結します |
6 | SUBSTR()、SUBSTRING() | 文字範囲で指定された部分文字列を返します。 |
7 | 下限(文字列) | 文字列を小文字に変換します |
8 | アッパー(str) | 文字列を大文字に変換します |
9 | 交換() | 文字列内の部分文字列を置換します |
10 | マッチ() | 文字列が指定されたパターンに一致するかどうかを確認します |
十一 | トリム(文字列) | 文字列の先頭と末尾にある空の文字を削除します。 |
12 | LTRIM(str) | 文字列の先頭にある空の文字を削除します。 |
13 | RTRIM(str) | 文字列の末尾にある空の文字を削除します。 |
14 | TO_BASE64(文字列) | 文字列をBase64に変換します |
15 | FROM_BASE64(文字列) | 文字列をBase64から変換します |
関数の操作方法を理解しやすくするために、関数を意図的に小さなグループにグループ化しました。以下では、各グループから 1 つの関数を検討します。文字列を操作するための関数の完全なリストは、公式ドキュメントで見つけることができます。
文字列を変換してみましょう
まず、文字列を少し異なる形式に変換するだけの最も単純な関数を扱います。たとえば、文字列を大文字と小文字に変換します。一般に、それらの動作は Java 言語の同じ関数に似ています。
そこで、いくつかの例を表に示します。
# | リクエスト | 結果 |
---|---|---|
1 | 長さを選択('テキスト') | 4 |
2 | 長さを選択('こんにちは') | 12 |
3 | 下を選択('Hi') | こんにちは |
4 | SELECT UPPER ('こんにちは') | こんにちは |
5 | SELECT SUBSTR ('Hello', 2, 3) | リブ |
6 | SELECT SUBSTR ('こんにちは、お元気ですか?', 8) | 元気ですか? |
これらの関数は、JDK の対応する関数と同様に、期待どおりに動作します。
唯一の注意点: 最初の行では、結果は 8 ではなく 4 になります。問題は、ラテン文字をエンコードするリクエストで1 バイト (ASCII エンコード) が使用されるということです。ただし、データベースのデータを操作する場合、文字列の長さはデータベースのエンコード設定によって異なります。データベースを操作していると、たくさんの驚きに気づくでしょう :)
文字列を使用した複雑なアクション
さて、文字列を扱うときのより複雑なことを見てみましょう。何を思いつきますか...
タスク テーブルからタスクを表示して、タスクの期限がすでに過ぎている場合は、タスクの説明に EXPIRED という単語を追加してみましょう。
興味深いですね。複雑な条件をまだ学習していないので、タスクを少し単純化しましょう。過去のタスクのリストを表示するクエリを作成してみましょう。ただし、必ずタイトルに「期限切れ!」という単語を追加してください。。
これを行うには、CONCAT 関数を使用する必要があります。
SELECT CONCAT( 'EXPIRED! ', name) FROM task
WHERE deadline < CURDATE()
このクエリの結果は次のようになります。
concat('期限切れ! ', 名前) |
---|
期限切れ!フロントエンドのバグを修正 |
おすすめ。データを少し異なる形式に変換する必要があるだけの場合は、これを Java コード レベルで行うこともできます。ただし、SQL サーバー側の文字列関数 (WHERE 内) を使用する場合は、それなしでは絶対にできません。
GO TO FULL VERSION