2

カンマ区切りのリストに日付を格納する mySQL データベースの列があります。このデータベースの必要性と動的構造のため、次の形式のコンマ区切りのリストにする必要があります。

date,date,date,date,date,date,date,date

実際のセットは次のようになります。

2012-01-01,2012-03-12,,,,,,

クエリでこのリストの日付の数を数えられるようにする必要があります。上記の例では、セット内の日付の数は 2 (2012-01-01 & 2012-03-12) になります。私の目的のために、このリストに 8 つの日付があるかどうかを知る必要があります。私はさまざまな解決策を見つけましたが、次のようなもので成功し、数字1が文字列にあった回数を教えてくれました:

LENGTH(_COLUMN_) - LENGTH(REPLACE(_COLUMN_, '1', ''))

「1」を正規表現に変更すると、機能しなくなりました。問題の一部は、正確に ####/##/## を見つけ、他の日付のバリエーションを見つけられない正規表現の解決策を見つけることができなかったことです。

私はまだ mySQL と正規表現を学んでおり、助けを求めています。

ありがとう。

4

2 に答える 2

0

8 つの日付を含む文字列の長さは、正確に 87 文字ではないでしょうか?

文字列内の実際の値が気になる場合は、それらを分割してください。

ああ、スキーマを再設計してください。

于 2012-09-06T00:47:09.383 に答える
0

phpでこれを行うことは可能ですか?

結果を変数に取得してから、次のようにします。

$variable=date,date,date,date,date,date,date,date;
$array=explode(",",$variable);
$count=count($array);

これは、文字列をコンマで分割して配列に挿入し、配列内の要素の数を数えることですexplodecount

爆発カウント

他のソリューションについても:

LENGTH(_COLUMN_) - LENGTH(REPLACE(_COLUMN_, '1', ''))

単純に行うことはできないでしょうか:

LENGTH(_COLUMN_) - LENGTH(REPLACE(_COLUMN_, ',', ''))

カンマの数を取得します。形式は区切り記号としてハイフンを使用したカンマ区切りの日付になると言うので、7 つのカンマの数を取得すると、8 つの日付があることがわかります。

于 2012-09-05T23:51:44.230 に答える