【问题标题】:SQL query substring in Laravel EloquentLaravel Eloquent 中的 SQL 查询子字符串
【发布时间】:2022-01-17 06:38:49
【问题描述】:

我无法在 Laravel 8 中正确获取 SQL 查询。我需要的是 name 列中的第一个字符,但只有 distinct 的第一个字符。我想使用这些字符作为词汇表描述的链接。

$chars = DB::table('parts')
            ->distinct()
            ->select('name')
            ->orderBy('name', 'asc')
            ->get();

我尝试将->select('name') 的行替换为->select(DB::raw('SUBSTRING(name, 0, 1)')) 行。但输出显然是错误的。我找到了一个完全像这样使用 SUBSTRING 的示例。我的查询有什么问题?

【问题讨论】:

    标签: php laravel eloquent laravel-8


    【解决方案1】:

    SQL Server 和 MySQL 中的子字符串使用从 1 开始的索引作为位置。你的第二个参数应该是 1,表示第一个字符。您的第三个参数应为 1,表示您只需要 1 个字符。

    $chars = DB::table('parts')
        ->distinct()
        ->selectRaw('SUBSTRING(name, 1, 1) name_index')
        ->orderBy('name', 'asc')
        ->get();
    

    【讨论】:

      【解决方案2】:

      你应该像这样改变你的查询:

      $chars = DB::table('parts')
          ->distinct()
          ->select(DB::raw('SUBSTRING(name, 0,2) char_name'))
          ->orderBy('char_name', 'asc')
          ->get();
      

      【讨论】:

      • 不幸的是,结果几乎相同[{"char_name":""}]
      • 更改它:SUBSTRING(name, 1, 1) as char_name 如果您仍然没有得到答案,请更改数字
      猜你喜欢
      • 2014-09-25
      • 2015-02-13
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      相关资源
      最近更新 更多