我可以编写自己的mySQL函数以在mySQL查询中使用吗?

时间:2009-04-03 15:23:29

标签: php mysql function

我可以编写一个我可以在进行mySQL查询时调用的自定义函数,例如。

我的数据库表包含字段'filetype'和'filename'。我想在返回结果之前对文件名执行一个函数。

$query = "SELECT filetype, MY_FUNCTION(filename) FROM table..";
$result = mysql_query($query);
return $result

SO $结果现在具有由MY_FUNCTION创建的新值。原始数据库数据将保持不变。

好的 - 所以它看起来像用户定义的函数......如何编写我自己的用户定义函数?我可以用PHP写吗?我在哪里保存函数或将其包含在我的全局文件中?

谢谢!

5 个答案:

答案 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.exeMySQL Query Browserphpmysqladmin等。

您可以在UDFC中撰写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作为本机代码加载。