0

期間の数に応じて結果を分類する必要があるシナリオが必要です。

フィールド値は次のとおりです。

aa.bb.ee.tt
aa.tt.ee
aa.tt

単一の期間で構成される値のみを検索したい場合、クエリは何になりますか?

4

4 に答える 4

1

列名がstrの場合、substr = "."と入力します。次の SQL では、必要なものが得られます。列 str の期間数でソート

SELECT (LENGTH(str) - LENGTH(REPLACE(str, substr, ''))) / LENGTH(substr) AS cnt
...
ORDER BY cnt DESC
于 2012-08-14T08:09:39.737 に答える
1

文字列内の文字の出現をカウントする組み込みの MySQL 関数がないため、次の手順を使用して実行できます。

  1. 元の文字列の文字数を数える
  2. カウントしたい文字を一時的に「削除」して、もう一度文字列をカウントする
  3. 2 番目のカウントから最初のカウントを引いて、出現回数を取得します。

元。

SELECT CHAR_LENGTH('hello') - CHAR_LENGTH(REPLACE('hello', 'l', '')) AS `COUNT`

2 を返します

結果を並べ替えたい場合は

SELECT CHAR_LENGTH(colName) - CHAR_LENGTH(REPLACE(colName, xChar, '')) AS `COUNT`
FROM tableName
ORDER BY `COUNT` DESC

どこ

colNameは、文字列を含む列の名前です。
xChar検索する文字です。

ところで、文字列の長さをバイト単位で返すので、CHAR_LENGTH()代わりに使用します。文字単位で測定された文字列の長さを返します。LENGTH()LENGTH()CHAR_LENGTH()

于 2012-08-14T08:50:00.370 に答える
0
private void CheckPeriod(string stringLine)  
{  
int counter = 0;

foreach (char c in stringLine)  
{  
if(c == ".")  
{  
counter = counter + 1;  
}    
}  

if(counter == 1)  
{  
//Do code  
}  
}

これが役立つこと、または正しい方向を指すことを願っています

于 2012-08-14T08:04:45.213 に答える
0

うーん、次のようなことができます

 SELECT * FROM TABLE_NAME WHERE COL_NAME REGEXP "[A-Za-z0-9]*\.[A-Za-z0-9]*"

単一の期間の値を取得し、複数の期間の結果に対して同じ方法で期間を追加するため

于 2012-08-14T08:07:23.780 に答える