2017-06-26 8 views
-1

私は、検索結果の表で場所が何回使用されたのかを調べようとしていますが、同じポストコード領域の開始が使用されているケースをグループ化したいと思います。純粋に使用されるテキストの次のグループ:mysqlを正規表現でグループ化しますか?

SELECT count(*), 
    search_browse_log.postcode_start 
FROM search_browse_log 
GROUP BY postcode_start 
ORDER BY count(*) DESC 

しかし、データの中には、私は例CR0、CR1、CR2(郵便番号が始まる)を持っています。 CR0、CR1、CR2のそれぞれではなく、「CR」の数が3になるようにまとめてグループ化したいと思います。

お手数をおかけしますようお願い申し上げます。

+0

https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-veryを参照してください。 -simple-sql-query – Strawberry

答えて

0

がwhetheに応じて、1つのまたは2のいずれかの文字を取得するにはGROUP BY句で条件付きの使用を参照してくださいr郵便番号は1文字または2文字で始まります。

GROUP BY IF(postcode_start REGEXP '^[A-Z][A-Z]', 
       LEFT(postcode_start, 2), 
       LEFT(postcode_start, 1)) 
+0

それはうまく動作します、ありがとう! – Newmania

0

それは郵便番号の最初の2つの文字だ場合、あなたがして、グループにLEFT関数を使用できます。文字列の先頭に数字以外の文字でグループ化するに

SELECT count(*), 
    LEFT(postcode_start,2) as `postcode_start` 
FROM search_browse_log 
GROUP BY LEFT(postcode_start,2) 
ORDER BY count() DESC 

は:

参考のため
SELECT count(*), 
    IF(postcode_start REGEX '^[a-ZA-Z][0-9]',LEFT(postcode_start,1),LEFT(postcode_start,2)) as `postcode_start` 
FROM search_browse_log 
GROUP BY IF(postcode_start REGEX '^[a-ZA-Z][0-9]',LEFT(postcode_start,1),LEFT(postcode_start,2)) 
ORDER BY count() DESC 

https://dev.mysql.com/doc/refman/5.7/en/regexp.html#operator_regexp

+0

ありがとうございますが、最初に1文字しかできませんでした。 1または2のいずれか – Newmania

+0

どのくらい知っていますか? –

+0

文字列の先頭に数字以外の文字をグループ化しますか? –

関連する問題