我如何在下面的SELECT语句中使用我在下面使用的REPLACE语句?更新工作正常,但在SELECT中需要相同的代码。
$sql1 = ("UPDATE $table SET notes=replace(REPLACE(notes,CHAR(13),' '),CHAR(10),' ') WHERE year='$year'");
$sql2 = "SELECT * FROM $table WHERE SUBSTR(week_start_date,-4)=$startDate AND week_num = '$week' AND archived!='yes' ORDER BY fn,ln";
感谢您的帮助。
答案 0 :(得分:0)
如果您的表中的数据包含您希望REPLACE
' '
的CRLF,则无法使用SELECT *
表示法 - 您必须告诉它<你想要替换字符的em>哪个列。你必须做这样的事情:
$sql2 = "SELECT REPLACE(REPLACE(notes, CHAR(13), ' '), CHAR(10), ' ') as fixed_notes FROM $table ...`
通常,最好避免使用SELECT *
,并始终明确指定所需的列(以及要在所述列上运行的任何标量函数)。这样,如果表定义添加了更多列,您就不会开始获取您从未打算处理的数据;如果列被删除,您将知道 是原因,而不是表示层中的其他内容。它还意味着可以在适当的情况下操作语句中的各个列。
如果您可以忍受这些限制,并且您不介意让该列出现两次,那么您可以这样做:
$sql2 = "SELECT *, REPLACE(REPLACE(notes, CHAR(13), ' '), CHAR(10), ' ') as fixed_notes FROM $table ...`