ホームページ >データベース >mysql チュートリアル >SQLで単一の「名前」列を「名」列と「姓」列に分割するにはどうすればよいですか?
単一の列の値を複数の列に分割します
タスクは、単一の「名前」列の値を、姓と名を含む複数の列に分割することです。ミドルネームを省略し、結果のデータを「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 サイトの他の関連記事を参照してください。