0

我昨天发布了这个问题,但我认为不清楚,所以我删除了它并再次发布了更多详细信息。在我的 oracle 数据库中,我有一个id_user定义为varchar的 USERS 表,这个 varchar 是这样的: '145/1' ...... '145/9' 所以要添加一个新用户,我检查最大值(' 145/9')并将 1 加到 id_user 的第二部分(斜线之后),使 id_user 为 '145/10'。

步骤是这样的:

  1. 首先:我使用substr()来获取所有 id_user 的第二部分(斜线之后)。
  2. 第二:我使用 Cast() 将其转换为 Int。
  3. 第三:我使用 Max() 来获取 Int 数的最大值。

最后在我的 laravel 代码中,我使用了这个查询的结果(结果是 9)并向它添加 1 并在用户表中插入一个新用户,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/%';
4

1 回答 1

0

最后,这个查询给了我正确的最大值:

 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];
于 2021-01-13T09:48:05.600 回答