質問:
名前のリストを含む 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 サイトの他の関連記事を参照してください。