在SELECT *语句中使用Replace

时间:2015-06-22 17:55:33

标签: php sql mysqli

我如何在下面的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";

感谢您的帮助。

1 个答案:

答案 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 ...`