我试图弄清楚如何按姓氏对 SQL 查询进行排序。这是有效的,除非客户姓氏具有特殊字符。
例如奥马利。
例如,如果这个姓氏按姓氏“Omar”排序,则顺序应为:
奥马利奥马尔
但是由于我在将其添加到数据库之前在 PHP 中使用了 addlashes(),因此排序实际上是在 O\'Maley 上进行的,因此排序最终是。
奥马尔·奥马利
当然 \ 在显示给用户之前会用 stripslashes() 删除。
我怎样才能正确排序?
我试图弄清楚如何按姓氏对 SQL 查询进行排序。这是有效的,除非客户姓氏具有特殊字符。
例如奥马利。
例如,如果这个姓氏按姓氏“Omar”排序,则顺序应为:
奥马利奥马尔
但是由于我在将其添加到数据库之前在 PHP 中使用了 addlashes(),因此排序实际上是在 O\'Maley 上进行的,因此排序最终是。
奥马尔·奥马利
当然 \ 在显示给用户之前会用 stripslashes() 删除。
我怎样才能正确排序?
研究使用REPLACE()
or TRANSLATE()
sql 函数。例如:
ORDER BY REPLACE(REPLACE(last_name, '\\', ''), ''', '')
上述REPLACE()
函数将在执行 order by 之前删除反斜杠和单引号。
ORDER BY TRANSLATE(last_name, '\\'', '')
上述TRANSLATE()
函数还将删除反斜杠和单引号。对于指定要从字符串中删除的更多字符,这可能是一种更好的格式。
注意:您没有提到数据库,所以我假设是 Oracle。大多数数据库都有等效的功能。