31

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

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

選択したタイトル フィールドに/を連結します。

ただし、次のことをしようとすると:

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

4

4 に答える 4

46

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

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

アプリを使用している場合は、SQL を使用して列名を読み取り、アプリを使用して上記のようなクエリを作成できます。列名を見つけるには、このスタックオーバーフローの質問を参照してください: Get table column names in mysql?

于 2012-11-25T12:37:56.557 に答える
24

/ をセパレータとして使用してフィールドを連結する場合は、次のように使用できますconcat_ws

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

ただし、クエリ内の列のリストを回避することはできません。*-syntax は「select * from」でのみ機能します。ただし、列をリストして動的にクエリを作成することはできます。

于 2012-11-25T12:49:34.400 に答える
2

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

于 2012-11-25T12:36:24.810 に答える
1

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

于 2012-11-25T12:38:11.363 に答える