ホームページ >データベース >mysql チュートリアル >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 サイトの他の関連記事を参照してください。