FULLNAME列があるテーブル、たとえばAがあります。この列の下に格納される値は、「surname namemiddle_name」の形式です(それぞれの間に1つのスペースがあります)。また、別のテーブルBがあり、このテーブルにはSURNAME、NAME、およびMIDDLENAMEの列があります。テーブルAからすべてのFULLNAMEセルを取得し、それに応じて分割してテーブルBに挿入するための最良の方法は何でしょうか。
ありがとう
FULLNAME列があるテーブル、たとえばAがあります。この列の下に格納される値は、「surname namemiddle_name」の形式です(それぞれの間に1つのスペースがあります)。また、別のテーブルBがあり、このテーブルにはSURNAME、NAME、およびMIDDLENAMEの列があります。テーブルAからすべてのFULLNAMEセルを取得し、それに応じて分割してテーブルBに挿入するための最良の方法は何でしょうか。
ありがとう
文字列内のオカレンスを検索するための関数(通常はそのインデックスを返す)をSubstring関数と組み合わせることができます。さらに、Left関数とRight関数が必要になります。
たとえば、SQL Serverには、次の関数があります。
CHARINDEX(expressionToFind、expressionToSearch [、start_location])
LEFT(character_expression、integer_expression)
RIGHT(character_expression、integer_expression)
手順:
中央に空のスペースを含む名前がある場合(たとえば、anna mariaのような名)、これは期待どおりに機能しないことに注意してください。
このクエリは文字列をこぼします。
select left(FULLNAME,CHARINDEX(' ',FULLNAME)), SUBSTRING(FULLNAME,CHARINDEX(' ',name)+1,len(FULLNAME)) from tableA