MySQL是一種廣泛使用的關系型數據庫管理系統,也是用于Web應用程序的一種開源數據庫。
MySQL 5.5使用用戶定義函數(UDF)擴展MySQL函數庫,這允許開發人員添加自定義函數到mysql服務器。
UDF可以是用C或C++編寫的動態共享庫,或者是其他編程語言(如Java或Python)編寫的可執行文件。
#include <mysql.h> #ifdef STANDARD /* STANDARD macro */ #else #define STANDARD #endif #include <string.h> #include <ctype.h> #define HA_NAME "myudf" extern "C" { my_bool myudf_init(UDF_INIT *initid, UDF_ARGS *args, char *message); void myudf_deinit(UDF_INIT *initid); long long myudf(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error); } my_bool myudf_init(UDF_INIT *initid, UDF_ARGS *args, char *message) { return 0; } void myudf_deinit(UDF_INIT *initid) { return; } long long myudf(UDF_INIT *initid, UDF_ARGS *args, char *is_null, char *error) { const char *str = args->args[0]; if (str == NULL || strlen(str) == 0) { return 0; } long long len = strlen(str); int i; long long sum = 0; for (i = 0; i < len; i++) { sum += str[i] - '0'; } return sum; }
這是一個簡單的UDF,此函數將輸入的字符串中的每個數字相加并將其作為輸出返回。
在MySQL中使用UDF語法創建此函數:
CREATE FUNCTION mysum RETURNS INT SONAME 'myudf.so';
然后在MySQL中可以像使用內置函數一樣使用此函數:
SELECT mysum('12345');
結果將是15。
上一篇ios支持mysql
下一篇mysql 5.4.3