次のクエリは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で動作させる方法はありますか
SQLではそれができません。フィールドを明示的にリストし、各フィールドを連結する必要があります。
SELECT CONCAT(field1, '/'), CONCAT(field2, '/'), ... FROM `socials` WHERE 1
アプリを使用している場合は、SQLを使用して列名を読み取り、アプリを使用して上記のようなクエリを作成できます。列名を見つけるには、このstackoverflowの質問を参照してください: mysqlのテーブル列名を取得しますか?
/を区切り文字として使用してフィールドを連結する場合は、concat_ws
を使用できます。
select concat_ws('/', col1, col2, col3) from mytable
ただし、クエリ内の列のリストをエスケープすることはできません。 * -syntaxは、「select * from」でのみ機能します。ただし、列をリストし、クエリを動的に構築できます。
複数のフィールドを文字列で連結することはできません。すべてのフィールドを選択する必要があります(*
)。
複数のフィールドでこれを行うことはできません。 this を探すこともできます。