Поиск в БД значений, которые соответствуют началу строки

Задача: PostgreSQL. У меня есть строка. А в базе данных много значений. Мне нужно достать из БД такие значения, которые полностью соответствуют началу строки.

Приведу пример:

У меня есть случайная строка hg23yu76, назову её string. А в базе есть такая таблица values:

id | value
---+----------
1  | hg2
---+----------
2  | hg23x
---+----------
3  | 3yu
---+----------
4  | hg23yu761

Запрос должен вернуть значение hg2, оно соответствует началу string. Остальные строки не подходят, потому что:

  1. hg23x не соответствует началу string, т.к. в hg23x после 3 идёт x, а в string после 3 следует y

  2. 3yu соответствует середине string, мне нужно, чтобы соответствовало началу

  3. hg23yu761 не соответствует началу string, т.к. в string нету 1. Проще говоря, строка в БД, которая длиньше string не подходит

    SELECT * FROM values WHERE ...
    

Как дописать этот запрос, чтобы он выполнял мою задачу?


Ответы (1 шт):

Автор решения: Akina
SELECT * 
FROM "values" 
WHERE 'hg23yu76' LIKE values.value || '%'; 

fiddle

→ Ссылка