2011-03-15 3 views
1

をそれらを追加します。MySQLは、数値部分を取得するために列を解析し、私は次の表を持っている

+------------------+ 
| ColumnName  | 
+------------------+ 
| 1 Slap   | 
+------------------+ 
| 13 Slap   | 
+------------------+ 
| 2 Slap   | 
+------------------+ 

MySQLだけで、私はColumnNameにだけに数値を取得し、それらのすべてを追加することを解析することができますか?

上記の表を実行すると、クエリの出力は16になります。

+0

すべての行は、常にあなたが整数を使用して、アプリでそれに 'Slap'を追加することができます' n個Slap'を言うなら。 :) –

+1

あなたの言うことは本当ですが、私の好奇心は、何が与えられたもので要求を行うことができるかにあります。 –

+0

誰かがもう答えをテストしますか? lol –

答えて

6
SELECT SUM(CAST(ColumnName as SIGNED)) FROM TableName 

(またはUNSIGNEDあなたが任意の負の数を持っていない場合)

編集:テストデータは、懐疑論者を満足させます。

mysql> select * from testtable; 
+---------+ 
| testcol | 
+---------+ 
| 1 Slap | 
| 13 Slap | 
| 2 Slap | 
+---------+ 
3 rows in set (0.00 sec) 

mysql> select sum(cast(testcol as unsigned)) from testtable; 
+--------------------------------+ 
| sum(cast(testcol as unsigned)) | 
+--------------------------------+ 
|        16 | 
+--------------------------------+ 
1 row in set, 3 warnings (0.00 sec) 

mysql> 
+0

答えをテストしましたか?それは動作しません。合計は、前記列内の全ての数の合計ではなく、表中の列の数を返す。質問はmysqlに固有のものであることに注意してください。 –

+0

私はmysqlで答えをテストしましたが、実際にはその数を合計しました。 – awm

+0

私はあなたのテストデータを見たいと思います。 OPsデータを使用すると、回答は「15」ではなく「3」を返します –

1
SELECT SUM(CAST(LEFT(ColumnName, INSTR(ColumnName, ' ')) as SIGNED)) 
FROM Table 
+0

これはmysqlで実際に動作する唯一の答えです。しかし、あなたはタイプミスがあります。 'SIGNED'は' as SIGNED 'となるはずです –

+0

これは実際に働く唯一の答えではありません。 – awm

関連する問題