我可以编写一个我可以在进行mySQL查询时调用的自定义函数,例如。
我的数据库表包含字段'filetype'和'filename'。我想在返回结果之前对文件名执行一个函数。
$query = "SELECT filetype, MY_FUNCTION(filename) FROM table..";
$result = mysql_query($query);
return $result
SO $结果现在具有由MY_FUNCTION创建的新值。原始数据库数据将保持不变。
好的 - 所以它看起来像用户定义的函数......如何编写我自己的用户定义函数?我可以用PHP写吗?我在哪里保存函数或将其包含在我的全局文件中?
谢谢!
答案 0 :(得分:12)
DELIMITER $$
CREATE FUNCTION MY_FUNCTION (FILENAME VARCHAR(255)) RETURNS VARCHAR(255)
DETERMINISTIC
NO SQL
BEGIN
RETURN SUBSTR(filename, 1, 20);
END
$$
DELIMITER ;
要创建该功能,只需将其代码(上面提供的代码)粘贴到您喜欢的查询工具中,例如mysql.exe
,MySQL Query Browser
,phpmysqladmin
等。
您可以在UDF
和C
中撰写SQL
。在后一种情况下,您不需要编译器。
我作为示例提供的函数是SQL UDF
。它只返回文件名的第一个20
个字符。
您可以使用MySQL
中的任何SQL UDF
功能。
答案 1 :(得分:7)
是的,这称为User Defined Functions (UDF)。
这里有good repository已经预先构建的功能,因此您可以检查某些内容是否符合您的需求。
答案 2 :(得分:0)
如果我理解正确,您想创建存储过程吗? http://dev.mysql.com/tech-resources/articles/mysql-storedprocedures.html
答案 3 :(得分:0)
答案 4 :(得分:0)
您无法在PHP中编写用户定义的函数(或者至少在没有编写将调用您的脚本的包装器的情况下编写),因为UDF作为本机代码加载。