web-dev-qa-db-ja.com

SELECT * MySqlに文字列を連結します

次のクエリはMySQLで正常に機能します。

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

It 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で動作させる方法はありますか

29
SaidbakR

SQLではそれができません。フィールドを明示的にリストし、各フィールドを連結する必要があります。

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

アプリを使用している場合は、SQLを使用して列名を読み取り、アプリを使用して上記のようなクエリを作成できます。列名を見つけるには、このstackoverflowの質問を参照してください: mysqlのテーブル列名を取得しますか?

40
Ben Lee

/を区切り文字として使用してフィールドを連結する場合は、concat_wsを使用できます。

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

ただし、クエリ内の列のリストをエスケープすることはできません。 * -syntaxは、「select * from」でのみ機能します。ただし、列をリストし、クエリを動的に構築できます。

24
Joni

複数のフィールドを文字列で連結することはできません。すべてのフィールドを選択する必要があります(*)。

2
rekire

複数のフィールドでこれを行うことはできません。 this を探すこともできます。

1
Rahul Tripathi