MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLクエリで使用する独自のMySQL関数を作成できますか?


はい、MySQLクエリで使用する独自のMySQL関数を作成できます。構文は次のとおりです。

DELIMITER //
CREATE FUNCTION yourFunctionName(optional parameters)) RETURNS yourDataType
DETERMINISTIC NO SQL
BEGIN
yourStatements1
.
.
.
.
N
END
//
DELIMITER ;

上記のCREATEFUNCTIONを使用して、カスタム関数を作成しました。

MySQLクエリで使用するカスタムMySQL関数を作成しましょう:

mysql> DELIMITER //
mysql> CREATE FUNCTION get_First_Name(Name VARCHAR(255)) RETURNS
VARCHAR(255)
   DETERMINISTIC
   NO SQL
   BEGIN
      RETURN LEFT(Name,LOCATE(' ',Name) - 1);
   END
   //
Query OK, 0 rows affected (0.20 sec)
mysql> DELIMITER ;

次に、SELECTステートメントを使用して上記の関数を呼び出します。

mysql> select get_First_Name('David Miller');

これにより、次の出力が生成されます。

+--------------------------------+
| get_First_Name('David Miller') |
+--------------------------------+
| David                          |
+--------------------------------+
1 row in set, 2 warnings (0.00 sec)
>
  1. MySQLでORDERBYNULLを使用できますか?

    はい、できます 注 −MySQL5.7以前はORDERBYNULLが便利でしたが、MySQL 8.0では、たとえば、暗黙の並べ替えを抑制するために最後にORDERBYNULLを指定する必要がなくなりました。 まずテーブルを作成しましょう- mysql> create table DemoTable -> ( -> Name varchar(10) -> ); Query OK, 0 rows affected (1.01 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable v

  2. MySQL WHERE句でSUM()関数の結果を使用できますか?

    MySQLのWHEREではなくHAVING句を使用できます。まずテーブルを作成しましょう- mysql> create table DemoTable (    Name varchar(50),    Price int ); Query OK, 0 rows affected (0.79 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values('Chris',30); Query OK, 1 row affected (0.15