前方10文字が同じ値のカラムを取得するSQL

※当サイトではアフィリエイト広告を利用しています

今回は、Oracle、MySQL、PostgreSQL、SQLiteそれぞれのDBMSで、前方10文字が同じ値のカラムを取得するSQLクエリの書き方についてメモしておきます。

SQLの記載例

oracle

Oracleデータベースでは、SUBSTR関数を使用して文字列の一部を抽出し、それを条件に用います。

SELECT *
FROM your_table
WHERE SUBSTR(your_column, 1, 10) = 'target_value';

このクエリでは、your_tableというテーブルのyour_columnというカラムから、先頭10文字がtarget_valueと一致する行を取得します。

mysql

MySQLでも同様に、SUBSTRING関数を使用して文字列の一部を取得します。

SELECT *
FROM your_table
WHERE SUBSTRING(your_column, 1, 10) = 'target_value';

SUBSTRING関数はOracleのSUBSTRと同じ役割を果たし、特定の位置から部分文字列を抽出します。

PostgreSQL

PostgreSQLでは、SUBSTRINGまたはLEFT関数を使用できます。
ここではLEFT関数を使用する例を示します。

SELECT *
FROM your_table
WHERE LEFT(your_column, 10) = 'target_value';

LEFT関数は、文字列の左端から指定した数の文字を返します。これにより、先頭10文字がtarget_valueと一致する行を取得します。

SQLite

SQLiteでも、SUBSTR関数を利用して同様のクエリを実行します。

SELECT *
FROM your_table
WHERE SUBSTR(your_column, 1, 10) = 'target_value';

SQLiteのSUBSTR関数も、Oracleと同様に動作し、文字列の一部を抽出します。

実際の使用例

ここで、より具体的な例を示します。

例えば、customersテーブルがあり、customer_nameカラムの先頭10文字がJohnDoe123と一致する行を取得したい場合、各DBMSでのクエリは以下のようになります。

Oracle

SELECT *
FROM customers
WHERE SUBSTR(customer_name, 1, 10) = 'JohnDoe123';

MySQL

SELECT *
FROM customers
WHERE SUBSTRING(customer_name, 1, 10) = 'JohnDoe123';

PostgreSQL

SELECT *
FROM customers
WHERE LEFT(customer_name, 10) = 'JohnDoe123';

SQLite

SELECT *
FROM customers
WHERE SUBSTR(customer_name, 1, 10) = 'JohnDoe123';

コメント