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

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

DDD
リリース: 2025-01-13 10:23:42
オリジナル
997 人が閲覧しました

How to Split a Single Column of Names into First and Last Name Columns in SQL?

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

質問:

名前のリストを含む 1 つの列を、姓名を含む複数の列に変換したいと考えています。

例:

<code class="language-sql">姓名
------------
abcd efgh
ijk lmn opq
asd j. asdjja
asb (asdfas) asd
asd</code>
ログイン後にコピー

期待される出力:

<code class="language-sql">名             姓
----------------------------------
abcd                     efgh
ijk                      lm opq
asd                      asdjja
asb                      asd
asd                      NULL</code>
ログイン後にコピー

解決策:

前の方法では、すべての名前形式を正しく処理できない可能性があります。 T-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))
    ELSE NULL
  END AS last_name
FROM 
  YourTable;</code>
ログイン後にコピー

この SQL コードは、最初に名前にスペースが含まれているかどうかをチェックします。存在する場合、SUBSTRING 関数を使用して、スペースの前の部分を名として抽出し、スペースの後の部分を姓として抽出します。名前にスペースが含まれていない場合、名前全体が名として使用され、姓は NULL になります。 これは、以前のソリューションよりも堅牢であり、さまざまな名前形式をより適切に処理します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート