Задать вопрос

MYSQL Как превратить столбцы в строки?

Доброго времени суток.
Есть следующий селект:
SELECT
`card_id`,
HEX(REVERSE(UNHEX(`card_id`))) AS `card_id_revers`,
IF((SELECT `card_id` REGEXP '^[0-9]+$'), (HEX(CAST(SUBSTRING(`card_id`,2) AS UNSIGNED))), NULL) AS card_id_sub_num,
IF((SELECT `card_id` REGEXP '^[0-9]+$'), (HEX(REVERSE(UNHEX(HEX(CAST(SUBSTRING(`card_id`,2) AS UNSIGNED)))))), NULL) AS card_id_sub_num_reverse,
IF((SELECT `card_id` REGEXP '^[0-9]+$'), (HEX(UNHEX(HEX(CAST(`card_id` AS UNSIGNED))))), NULL) AS card_id_num,
IF((SELECT `card_id` REGEXP '^[0-9]+$'), (HEX(REVERSE(UNHEX(HEX(CAST(`card_id` AS UNSIGNED)))))), NULL) AS card_id_num_revers
FROM `user_card`


Результат выполнения:
+------------------+------------------+-----------------+-------------------------+----------------+--------------------+
| card_id          | card_id_revers   | card_id_sub_num | card_id_sub_num_reverse | card_id_num    | card_id_num_revers |
+------------------+------------------+-----------------+-------------------------+----------------+--------------------+
| E15A6E9B         | 9B6E5AE1         | NULL            | NULL                    | NULL           | NULL               |
| E2334E7B         | 7B4E33E2         | NULL            | NULL                    | NULL           | NULL               |
| E2786846         | 466878E2         | NULL            | NULL                    | NULL           | NULL               |
| A0103449         | 493410A0         | NULL            | NULL                    | NULL           | NULL               |
| 04577902B22A80   | 802AB202795704   | NULL            | NULL                    | NULL           | NULL               |
| E15A6E9          | E9A6150E         | NULL            | NULL                    | NULL           | NULL               |
| 1222077154732672 | 7226735471072212 | C9FA5DEBAA80    | 80AAEB5DFAC9            | 04577902B22A80 | 802AB202795704     |
| 3780800155       | 5501808037       | 2E8A109B        | 9B108A2E                | E15A6E9B       | 9B6E5AE1           |
+------------------+------------------+-----------------+-------------------------+----------------+--------------------+


Возможно ли разбить колоны с строке на несколько строк?
Например:
| 1222077154732672 | 7226735471072212 | C9FA5DEBAA80    | 80AAEB5DFAC9            | 04577902B22A80 | 802AB202795704     |

На выходе получить:
+------------------+
| card_id          |
+------------------+
| 1222077154732672 | 
| 7226735471072212 |
| C9FA5DEBAA80     | 
| 80AAEB5DFAC9     |
| 04577902B22A80   |
| 802AB202795704   |
+------------------+


Спасибо!
  • Вопрос задан
  • 2980 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@dredd_krd
С этим может справиться оператор UNION. Он может объединять разные запросы так, чтобы их вывод помещался в следующую строку результирующей таблицы, вместо соседних полей
т.е. например запрос "(SELECT 'abc' AS `bla`) UNION (SELECT 'def' AS `bla`) UNION (SELECT '123' AS `bla`)"
выдаст в результате:
+------------------+
| bla              |
+------------------+
| abc              |
| def              |
| 123              |
+------------------+

Так можете побить свой запрос на составляющие этого UNION и объединить их таким образом с его помощью.
Но есть нюанс: вывод подзапросов, объединяемых UNION, обязан иметь формат результирующей таблицы, чтобы она могла нормально "склеиться"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы