Php 按查询对SQL排序,转义字符前不带斜杠

Php 按查询对SQL排序,转义字符前不带斜杠,php,sql,sql-order-by,stripslashes,addslashes,Php,Sql,Sql Order By,Stripslashes,Addslashes,我试图弄清楚如何按姓氏对SQL查询进行排序。除了客户姓氏有特殊字符的情况外,这是有效的 例如奥马利 例如,如果该姓氏以姓氏“Omar”排序,则顺序应为: 奥马利 奥马尔 但由于在将其添加到数据库之前,我在PHP中使用了addslashes(),因此排序实际上是在O踯Maley上进行的,因此排序结果是 奥马尔 奥马利 当然,在显示给用户之前,会使用stripslashes()删除\ 如何正确排序?研究使用REPLACE()或TRANSLATE()sql函数。例如: ORDER BY REPLACE

我试图弄清楚如何按姓氏对SQL查询进行排序。除了客户姓氏有特殊字符的情况外,这是有效的

例如奥马利

例如,如果该姓氏以姓氏“Omar”排序,则顺序应为:

奥马利 奥马尔

但由于在将其添加到数据库之前,我在PHP中使用了addslashes(),因此排序实际上是在O踯Maley上进行的,因此排序结果是

奥马尔 奥马利

当然,在显示给用户之前,会使用stripslashes()删除\


如何正确排序?

研究使用
REPLACE()
TRANSLATE()
sql函数。例如:

ORDER BY REPLACE(REPLACE(last_name, '\\', ''), ''', '')
上述
REPLACE()
函数将在执行order by之前删除反斜杠和单引号

ORDER BY TRANSLATE(last_name, '\\'', '')
上述
TRANSLATE()
函数还将删除反斜杠和单引号。对于指定要从字符串中删除的更多字符,这可能是一种更好的格式


注意:您没有提到数据库,所以我假设是Oracle。大多数数据库都有相同的函数。

研究使用
REPLACE()
TRANSLATE()
sql函数。例如:

ORDER BY REPLACE(REPLACE(last_name, '\\', ''), ''', '')
上述
REPLACE()
函数将在执行order by之前删除反斜杠和单引号

ORDER BY TRANSLATE(last_name, '\\'', '')
上述
TRANSLATE()
函数还将删除反斜杠和单引号。对于指定要从字符串中删除的更多字符,这可能是一种更好的格式


注意:您没有提到数据库,所以我假设是Oracle。大多数数据库都有相同的功能。

您应该从数据中删除斜杠。您在插入之前进行了双重转义。您应该从数据中删除斜杠。在插入之前,您进行了双重转义。