2017-08-26 4 views
1

私は、次のデータ含まmysqlテーブルに提出channel持っている:私はスラッシュの後と-1の前の数値を取得したい上記のデータからselectクエリによって提出されたmysqlテーブルから文字列の一部を返す方法は?

DAHDI/69-1 
DAHDI/68-1 
DAHDI/20-1 
DAHDI/1-1 
DAHDI/6-1 
DAHDI/67-1 
DAHDI/14-1 
DAHDI/4-1 
DAHDI/19-1 
DAHDI/20-1 

を。

期待される結果:

DAHDI/69-1からのみ 69

DAHDI1は、channelというファイルで固定値です。

編集:百万行の最大数値を含む最上位100行が必要です。

答えて

1

文字列内の文字インデックスを特定してから、値を抽出する簡単な計算を行う必要があります。クエリは、このようになります。

SELECT 0 + substring(channel, 
        locate('/', channel) + 1, 
        locate('-', channel) - locate('/', channel) - 1) AS myvalue 
FROM table 
ORDER BY myvalue DESC 
LIMIT 100 

SUBSTRING(str,pos,len)
は、posの位置から、文字列strから長いストリングlen文字を返します。

LOCATE(substr,str)
は、文字列strにsubstr substrが最初に現れる位置を返します。

0 +トリックは、文字列を数値に変換するように強制します。

+0

これは問題なく動作しています。最上位の数値(例:479,450,430、...... 200)を含む100行をどのように取得できますか教えてください。 – Rezuan

+1

答えを編集したので、この新しいニーズを反映するために質問を編集する必要があります。 –

+1

素晴らしい!その働き。 – Rezuan

関連する問題