SQL Laravel Eloquent 中的查询子字符串
SQL query substring in Laravel Eloquent
我在 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 的例子。我的查询有什么问题?
您应该像这样更改您的查询:
$chars = DB::table('parts')
->distinct()
->select(DB::raw('SUBSTRING(name, 0,2) char_name'))
->orderBy('char_name', 'asc')
->get();
SQL 服务器和 MySQL 中的子字符串使用基于 1 的索引作为位置。你的第二个参数应该是 1,表示第一个字符。您的第三个参数应为 1,表示您只需要 1 个字符。
$chars = DB::table('parts')
->distinct()
->selectRaw('SUBSTRING(name, 1, 1) name_index')
->orderBy('name', 'asc')
->get();
我在 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 的例子。我的查询有什么问题?
您应该像这样更改您的查询:
$chars = DB::table('parts')
->distinct()
->select(DB::raw('SUBSTRING(name, 0,2) char_name'))
->orderBy('char_name', 'asc')
->get();
SQL 服务器和 MySQL 中的子字符串使用基于 1 的索引作为位置。你的第二个参数应该是 1,表示第一个字符。您的第三个参数应为 1,表示您只需要 1 个字符。
$chars = DB::table('parts')
->distinct()
->selectRaw('SUBSTRING(name, 1, 1) name_index')
->orderBy('name', 'asc')
->get();