0

こんにちは、文字列または数値を含むことができるインデックス文字列フィールドがあります。このインデックスの最大値と最小値を取得したいのですが、数字のみのインデックスを整数として、それ以外の場合は文字列として並べたいと思います。たとえば、私が欲しい:

   ( "1", "5", "10" )       MIN=1 MAX=10 // mind MAX=10 not 5 as string order!
   ( "A", "D", "Z" )        MIN=A MAX=Z

私はこれを試しました:

MAX(IF(CAST(idxfield as UNSIGNED)=0,CAST(idxfield as UNSIGNED),idxfield)) as maxField

しかし、うまくいきません。

4

2 に答える 2

0

これを試して ::

Select 
idxfield REGEXP '[0-9] as field1,
CASE field1
 WHEN 1 THEN SELECT idxfield from table order by idxfield+0 desc
 WHEN 0 THEN SELECT idxfield from table order by idxfield desc
END as max_value,
CASE field1
 WHEN 1 THEN SELECT idxfield from table order by idxfield+0
 WHEN 0 THEN SELECT idxfield from table order by idxfield
END as min_value
from table
于 2012-06-21T17:39:45.300 に答える
0

REGEXPフィールドが数値かどうかをテストするために使用できます。

例えば:

select '1'  REGEXP '^[0-9]+$'; // returns 1
select 'A'  REGEXP '^[0-9]+$'; // returns 0
于 2012-06-21T15:55:12.343 に答える