ホームページ >データベース >mysql チュートリアル >SQL を使用して単一の名前列を姓名列に分割するにはどうすればよいですか?

SQL を使用して単一の名前列を姓名列に分割するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-13 08:27:43443ブラウズ

How Can I Split a Single Name Column into First and Last Name Columns Using SQL?

SQL ソリューション: 1 つの列の値を複数の列に分割

単一の列の値を複数の列に分割することは、データ処理における一般的なシナリオです。 SQL ソリューションは次のとおりです:

<code class="language-sql">SELECT
  CASE
    WHEN name LIKE '% %' THEN SUBSTRING(name, 1, CHARINDEX(' ', name) - 1)
    ELSE name
  END AS first_name,
  CASE
    WHEN name LIKE '% %' THEN SUBSTRING(name, CHARINDEX(' ', name) + 1, LEN(name))
  END AS last_name
FROM
  YourTable;</code>

このクエリは CASE ステートメントを使用して、name 列にスペースが含まれているかどうかを判断します。スペースが見つかった場合、最初の条件ステートメントはスペースの前の文字を抽出し、それらを first_name 列に割り当てます。スペースのない値の場合は、それ自体を直接割り当てます。

last_name 列についても、同様のアプローチが使用されます。ただし、ミドルネームが含まれないようにするため、SUBSTRING 関数を使用してスペース以降の部分を直接抽出します。これにより、元の名前に 3 語以上の単語が含まれている場合でも、姓が正確に抽出されます。

クエリ結果には、first_name と last_name の 2 つの列が含まれます。この方法は完璧ではなく、複雑な名前形式を完全には処理できない可能性があることに注意することが重要です。ただし、SQL を使用して単一の列値を複数の列に分割するための良い開始点となります。

以上がSQL を使用して単一の名前列を姓名列に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。