Подтвердить что ты не робот

Конкат строки для SELECT * MySql

Следующий запрос отлично работает с MySQL:

SELECT concat(title,'/') FROM `socials` WHERE 1

Это Concat / для выбранного поля заголовка.

Однако, когда я пытаюсь сделать следующее:

SELECT concat(*,'/') FROM `socials` WHERE 1

Он возвращает следующую ошибку:

 #1064 - You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near '*,'/') FROM `socials` WHERE 1 LIMIT 0, 30' at line 1

Итак, есть ли способ заставить такой SQL-запрос работать с MySql

4b9b3361

Ответ 1

Вы просто не можете сделать это в SQL. Вы должны явно указать поля и concat каждый из них:

SELECT CONCAT(field1, '/'), CONCAT(field2, '/'), ... FROM `socials` WHERE 1

Если вы используете приложение, вы можете использовать SQL для чтения имен столбцов, а затем использовать свое приложение для построения запроса, как описано выше. См. Этот вопрос stackoverflow, чтобы найти имена столбцов: Получить имена столбцов таблицы в mysql?

Ответ 2

Если вы хотите объединить поля, используя/в качестве разделителя, вы можете использовать concat_ws:

select concat_ws('/', col1, col2, col3) from mytable

Вы не можете избежать перечисления столбцов в запросе. * -syntax работает только в "select * from". Вы можете перечислить столбцы и построить запрос динамически.

Ответ 3

Вы не можете объединить несколько полей со строкой. Вам нужно выбрать инкремент поля всех (*).

Ответ 4

Вы не можете сделать это на нескольких полях. Вы также можете найти this.