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

SQLで単一の「名前」列を「名」列と「姓」列に分割するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-13 11:54:43344ブラウズ

How to Split a Single

単一の列の値を複数の列に分割します

タスクは、単一の「名前」列の値を、姓と名を含む複数の列に分割することです。ミドルネームを省略し、結果のデータを「first_name」列と「last_name」列に表示したいとします。

カスタマイズされたソリューション

提案されたアプローチは、さまざまな名前形式の処理には適していない可能性があります。ただし、カスタム SQL クエリではこれを実現できます。

<code class="language-sql">SELECT 
    CASE
        WHEN name LIKE '% %' THEN LEFT(name, Charindex(' ', name) - 1)
        ELSE name
    END AS first_name,
    CASE
        WHEN name LIKE '% %' THEN RIGHT(name, LEN(name) - Charindex(' ', REVERSE(name)))
        ELSE NULL
    END AS last_name
FROM YourTable;</code>

このクエリは、Charindex 関数を使用して、Name 列の最初のスペース文字の位置を検索します。スペースが見つかった場合、名前は名と姓の部分に分割されます。スペースが見つからない場合は、名前全体が名の列に割り当てられ、NULL 値が姓の列に割り当てられます。 RIGHT 関数の 2 番目のパラメーターは、LEN(name) を使用して文字列の長さを計算するように修正され、姓が正しく抽出されるようになりました。

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

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