我能否编写自己的mySQL函数并在mySQL查询中使用?

6

我能否编写自定义函数并在进行MySQL查询时调用该函数?

我的数据库表有字段“文件类型”和“文件名”。我希望在返回结果之前对文件名执行某个函数。

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

现在,$result已经拥有了MY_FUNCTION创建的新值。原始数据库数据将不会改变。

好的,看起来用户定义函数是正确的选择...我该如何编写自己的用户定义函数?我可以使用PHP编写它吗?我要把函数保存在哪里,还是将其包含在全局文件中?

谢谢!

5个回答

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等。

您可以在CSQL中编写UDF。在后一种情况下,您无需拥有编译器。

我提供的函数是一个SQL UDF示例。它只返回文件名的前20个字符。

您可以在SQL UDF中使用任何MySQL函数。


非常感谢您的回复,我应该在哪里编写这段代码?我需要编译一个C程序才能从Windows 2003服务器运行UDF吗?您知道有没有好的教程可以参考,或者能否指导我完成这个过程。非常感谢。 - undefined
自定义函数与表格一样,是在MySQL数据库中编写的。 - St. John Johnson

8

0

我认为他不想改变数据库中的数据,只是将更改应用于结果(在数据库之外)。 - Elie
嗨 - 没错,我不希望数据库中的数据发生改变。谢谢。 - undefined
你不能在查询的select部分调用存储过程。 - vaske


0

无法在PHP中编写用户自定义函数(或者至少不会在不编写调用脚本的包装器的情况下),因为UDF是作为本地代码加载的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接