我想我需要删除0-31和127的字符,
是否有一个函数或一段代码来有效地执行此操作.
我有一个cms存储对文章的评论.这些注释可以是线程的,也可以是非线程的.虽然技术上它们是相同的,只是在没有线程的情况下,回复列留空.我的应用程序适用于sqlLite,MySQL和pgsql,所以我需要相当标准的SQL.
我目前有一个评论表
comment_id
article_id
user_id
comment
timestamp
thread (this is the reply column)
Run Code Online (Sandbox Code Playgroud)
我的问题是弄清楚如何最好地代表数据库中的线程注释.也许在一个单独的表中支持没有内容的树集和一个简单的表来保存文本?也许它已经是这样了?或许另一种方式?
如果注释是非线程的,我可以很容易地按时间戳排序.
如果他们是线程我就像这样
ORDER BY SUBSTRING(c.thread, 1, (LENGTH(c.thread) - 1))
Run Code Online (Sandbox Code Playgroud)
正如您在ORDER BY中看到的那样,注释查询将不会使用索引,因为基于函数的索引实际上只存在于Oracle中.帮我快速点评评论页面.
我有一个奇怪的情况.我必须在Oracle和MySQL中使用NVL(columna,columnb).我无法更改SQL,因为它在我无法编辑的包中,但它是我在MySQL和Oracle之间的应用程序中唯一不起作用的东西.
我如何在MySQL中编写NVL().我看过这里(http://dev.mysql.com/doc/refman/5.0/en/create-function-udf.html)看起来我必须用C编写并将其链接到MySQL.
但是http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html似乎说我可以在不编译添加的情况下完成.
我试过这个,但它不起作用.我做错了什么?
CREATE FUNCTION NVL (first DATETIME, second DATETIME)
RETURNS DATETIME
begin
DECLARE first DATETIME;
DECLARE second DATETIME;
DECLARE return_value DATETIME;
SET return_value = IFNULL(first,second);
RETURN return_value;
end
Run Code Online (Sandbox Code Playgroud)