Php 在SELECT*语句中使用Replace

Php 在SELECT*语句中使用Replace,php,sql,mysqli,Php,Sql,Mysqli,我如何将下面使用的REPLACE语句应用到下面的SELECT语句中?更新工作正常,但在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_n

我如何将下面使用的REPLACE语句应用到下面的SELECT语句中?更新工作正常,但在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";

感谢您的帮助。

如果您的表中有CRLF数据,您想用
''
替换
,您不能使用
选择*
符号-您必须告诉它您想替换其中的字符。您必须执行以下操作:

$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 ...`

如果先执行
替换
,则无需更改
选择
。或者您想在插入
之前先进行测试?尝试时会发生什么?你有错误吗?我假设他们不想在他们的列表中出现两次列,但我想那会有用的。我会更新我的答案。好吧,他们可以用他们想要的任何替换项来为列别名。事实上,如果他们不使用别名,他们将得到一个没有名称的列。(或者至少,SQL Server会返回这样的结果。)