Как отредактировать результат строкового значения значений столбцов, возвращаемых `SELECT` SQL - PullRequest
0 голосов
/ 17 сентября 2018

Я написал запрос, который возвращает результаты, которые я ищу, но мне хотелось бы, чтобы вместо полной строки device_info возвращалось только 'iOS' или 'Android'.

SELECT
  fans.device_info
FROM
  fans
JOIN
  rewards_codes_redemptions ON rewards_codes_redemptions.fan_id = fans.id
JOIN
  rewards_codes ON rewards_codes.id = rewards_codes_redemptions.reward_code_id
WHERE
  rewards_codes.account_id IN ('1580fb29-4c9e-4f6f-9d1c-c06e43a873fb',
                               'edf9984a-5000-44f5-b379-25bb34620c78')
ORDER BY
  rewards_codes_redemptions.created_at
LIMIT
 50

ТЕКУЩИЕ РЕЗУЛЬТАТЫ

iOS; 11.4.1; iPhone,
Android; 9; Pixel 2 XL
// ...

желаемые результаты

iOS,
Android

Может быть, лучше сделать подзапрос для каждого?

Спасибо за помощь

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

Я использовал оператор CASE в предложении SELECT.

SELECT
  CASE
    WHEN fans.device_info LIKE '%iOS%' THEN 'iOS'
    WHEN fans.device_info LIKE '%Android%' THEN 'Android'
  END AS device
0 голосов
/ 17 сентября 2018

Я не уверен, почему вы хотите запятую после iOS. Итак, позвольте мне предположить, что вы просто хотите строку перед первой точкой с запятой.

В этом случае:

SELECT (regexp_split_to_array(fans.device_info, ';'))[1] as device
0 голосов
/ 17 сентября 2018

То, что вы ищете, - это использование оператора CASE в сочетании с LIKE.

Лучше всего, когда вы пишете код такого рода, чтобы получить исходные результаты и добавить столбец для нужного набора результатов.

Корпус: https://www.w3schools.com/sql/func_mysql_case.asp

Как: https://www.w3schools.com/sql/sql_like.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...