0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【SQL】最後の一文字を除いて抽出する+プチ応用

Posted at

はじめに

最後の一文字を除いたデータを抽出するSQLを書くことが稀にあるので簡易的に紹介します。

最後の一文字を除いてデータ抽出

以下のように、市区町村が格納された簡易テーブルがあるとします。

id city
1 世田谷区
2 東村山市
3 町田市

以下のクエリ実行で、最後の一文字である市区町村を除いたデータが取得できます。

SQL
SELECT SUBSTRING(city, 1, CHAR_LENGTH(city) - 1) FROM tabel_name;

結果

city
世田谷
東村山
町田

SUBSTRING関数を使用してcity列の1番目の文字から、city列の文字数 - 1番目の文字までの部分文字列を抽出しています。
世田谷区であれば、世〜谷を抽出することになります。

応用??

以下から、最後の一文字以外に「市」「区」「町」「村」を持つcityのデータを抽出します。

id city
1 世田谷区
2 東村山市
3 町田市

例えば、2番の東村山市は「市」以外に「村」が含まれるので抽出します。

それでは以下のクエリを実行します。

SQL
SELECT id, city, city_substring
FROM (
    SELECT id, city, SUBSTRING(city, 1, CHAR_LENGTH(city) - 1) AS city_substring
    FROM tabel_name
) AS sub
WHERE city_substring LIKE '%市%' OR city_substring LIKE '%区%' OR city_substring LIKE '%町%' OR city_substring LIKE '%村%';

結果

id city city_substring
2 東村山市 東村山
3 町田市 町田

FROM句の中のサブクエリで、idとcityに加え、cityの最後の文字を取り除いた部分文字列 city_substringを取得しています。

サブクエリで取得したcity_substringのうち市区町村の文字列を含む行を
WHERE句とLIKE句を使用してフィルタリングします。
結果、最後の一文字以外に「市」「区」「町」「村」を持つcityのデータが判明しました。

上記のデータは例えば、住所から市区町村を抽出する正規表現のパターンに使用しますが
本記事の主旨とは少し逸れるため、詳細は別の記事で紹介できればと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?