【问题标题】:Sort SQL ORDER BY query without slashes in front of escaped characters对 SQL ORDER BY 查询进行排序,转义字符前不带斜线
【发布时间】:2016-06-07 06:07:06
【问题描述】:

我想弄清楚如何按姓氏对 SQL 查询进行排序。除非客户姓氏具有特殊字符,否则此方法有效。

例如奥马利。

如果这个姓氏是按照姓氏“Omar”排序的,例如,顺序应该是:

奥马利 奥马尔

但是由于我在将其添加到数据库之前在 PHP 中使用了 addlashes(),所以排序实际上是在 O\'Maley 上进行的,所以排序最终是。

奥马尔 奥马利

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

我怎样才能正确排序?

【问题讨论】:

  • 您应该从数据中删除斜线。您在插入之前双重转义。

标签: php sql sql-order-by stripslashes addslashes


【解决方案1】:

考虑使用REPLACE()TRANSLATE() sql 函数。例如:

ORDER BY REPLACE(REPLACE(last_name, '\\', ''), ''', '')

上述REPLACE() 函数将在执行排序前删除反斜杠和单引号。

ORDER BY TRANSLATE(last_name, '\\'', '')

上面的TRANSLATE() 函数也会删除反斜杠和单引号。对于指定要从字符串中删除的更多字符,这可能是一种更好的格式。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 2020-10-01
    相关资源
    最近更新 更多