0

私のクライアントによるいくつかの制限により、単一の mysql クエリ内でこれを行う必要があります。

varchar次のような値を持つフィールドがあります: 値3,050 wheels を持つ別のintegerフィールドがあります:2

me を返すクエリが必要です6,100 wheels

おそらくCONVERT3,050を数値に変換するために使用できますが、のインデックスを見つける方法がわかりません" "。さらに、出力をカンマでフォーマットし、文字列(数値以外)部分と連結する必要があります。

助けてください。

4

5 に答える 5

1

SUBSTRING_INDEX文字列の適切な部分を選択しFORMAT、数値を文字列に変換するために使用します。

ここではすべての機能について説明します

CONCAT(FORMAT(CONVERT(SUBSTRING_INDEX(f, ' ', 1), UNSIGNED) * g, 0),
       ' ',
       SUBSTRING_INDEX(f,' ',-1))
于 2012-07-20T05:08:12.343 に答える
0

フィールドに数値があるかどうかを確認するには、MySQL正規表現メソッドを使用します。インデックスを見つけるには、SUBSTRING_INDEXを使用して、さらに計算を進めることができます。

SELECT CONVERT(
    CONCAT(
        SUBSTRING_INDEX(field,",",1),
        SUBSTRING_INDEX(
            SUBSTRING_INDEX(field,",",-1), " ", 1)
             ), UNSIGNED) AS NO
FROM table_name
WHERE field REGEXP '[0-9]';

これがあなたのために働くことを願っています...

于 2012-07-20T05:19:34.503 に答える
0

これはあなたのために働くかもしれません:

CONCAT( FORMAT( CAST( REPLACE( LEFT( field1, locate( ' ', field1 )-1 ), ',', '' ) AS UNSIGNED ) * field2, 0 ),
        MID( field1, LOCATE( ' ', field1 )))

の初期数値の後に、任意の量のテキストを再追加する必要がありますfield1。したがって、が含まれている場合に3,500 wheels and spikesなります。7,000 wheels and spikesfield22

于 2012-07-20T05:14:32.367 に答える
0

このクエリを試してください

    select 
    concat( convert(substring_index(fieldName, ' ', 1 ), decimal) * intField,
    ',', substr(fieldName, length(substring_index(fieldName, ' ', 1))+1)) 
     as yourField
    from tableName
于 2012-07-20T05:45:30.410 に答える
0

SUBSTRINGCASTを使用できます。

SELECT  CAST(SUBSTRING_INDEX(field1, ' ', -1) AS UNSIGNED)*field2 as result,  FROM tableName ;
于 2012-07-20T05:00:43.003 に答える