如何在 laravel 8 的查询构建器中使用嵌套函数 substr()、cast() 和 Max()?
How to use Nested functions substr(), cast() and Max() in query builder in laravel 8?
我昨天发布了这个问题,但我认为它不清楚,所以我删除了它并重新发布了更多细节。
在我的 oracle 数据库中,我有一个 USERS table,id_user 定义为 varchar,这个 varchar 是这样的:' 145/1' ...... '145/9' 所以要添加一个新用户,我检查最大值('145/9')并将 1 添加到 id_user 的第二部分(在斜杠之后) 这样 id_user 就是“145/10”。
步骤是这样的:
- 首先: 我正在使用 substr() 来获取所有 [=40= 的第二部分(斜线后) ].
- 其次:我用Cast()把它转成Int。
- 第三:我用Max()来获取Int数的最大值
最后,在我的 laravel 代码中,我使用了这个查询的结果(结果是 9)并将其加 1 并在 users 中插入一个新用户table 和 id_user = '145/10' 等等。
这个查询工作正常,但我在查询生成器中需要它,所以我尝试了很多查询,但它们没有用。(请帮助我)
SELECT MAX(CAST(SUBSTR(id_user, INSTR (id_user, '/') + 1) AS INT)) AS Aggregate
FROM "users"
WHERE "ID_USER" LIKE '145/%';
最后,这个查询给出了正确的最大值:
DB::table('users')->select(DB::raw('MAX(CAST(SUBSTR(id_user,INSTR(id_user, \'/\') + 1) AS INT)) as max')) ->where('id_user','like','145'.'/%')->get()[0];
我昨天发布了这个问题,但我认为它不清楚,所以我删除了它并重新发布了更多细节。 在我的 oracle 数据库中,我有一个 USERS table,id_user 定义为 varchar,这个 varchar 是这样的:' 145/1' ...... '145/9' 所以要添加一个新用户,我检查最大值('145/9')并将 1 添加到 id_user 的第二部分(在斜杠之后) 这样 id_user 就是“145/10”。
步骤是这样的:
- 首先: 我正在使用 substr() 来获取所有 [=40= 的第二部分(斜线后) ].
- 其次:我用Cast()把它转成Int。
- 第三:我用Max()来获取Int数的最大值
最后,在我的 laravel 代码中,我使用了这个查询的结果(结果是 9)并将其加 1 并在 users 中插入一个新用户table 和 id_user = '145/10' 等等。 这个查询工作正常,但我在查询生成器中需要它,所以我尝试了很多查询,但它们没有用。(请帮助我)
SELECT MAX(CAST(SUBSTR(id_user, INSTR (id_user, '/') + 1) AS INT)) AS Aggregate
FROM "users"
WHERE "ID_USER" LIKE '145/%';
最后,这个查询给出了正确的最大值:
DB::table('users')->select(DB::raw('MAX(CAST(SUBSTR(id_user,INSTR(id_user, \'/\') + 1) AS INT)) as max')) ->where('id_user','like','145'.'/%')->get()[0];