1

FULLNAME列があるテーブル、たとえばAがあります。この列の下に格納される値は、「surname namemiddle_name」の形式です(それぞれの間に1つのスペースがあります)。また、別のテーブルBがあり、このテーブルにはSURNAMENAME、およびMIDDLENAMEの列があります。テーブルAからすべてのFULLNAMEセルを取得し、それに応じて分割してテーブルBに挿入するための最良の方法は何でしょうか。

ありがとう

4

2 に答える 2

4

文字列内のオカレンスを検索するための関数(通常はそのインデックスを返す)をSubstring関数と組み合わせることができます。さらに、Left関数とRight関数が必要になります。

たとえば、SQL Serverには、次の関数があります。

CHARINDEX(expressionToFind、expressionToSearch [、start_location])

SUBSTRING(式、開始、長さ)

LEFT(character_expression、integer_expression)

RIGHT(character_expression、integer_expression)

手順:

  1. LEFTを使用して、最初の単語を取得します(integer_expression = 1番目のEmtpyスペースのインデックス)
  2. サブストリングを使用して中央の単語を取得します(開始は最初の空のスペースのインデックス+ 1、長さは全長-空のスペースの2番目のインデックス、startlocationを使用して最初の出現+1であるはずの2番目の出現を検索します)
  3. 手順1と同様に、適切な関数を使用して最後の単語を取得します

中央に空のスペースを含む名前がある場合(たとえば、anna mariaのような名)、これは期待どおりに機能しないことに注意してください。

于 2013-02-15T08:28:51.133 に答える
0

このクエリは文字列をこぼします。

select left(FULLNAME,CHARINDEX(' ',FULLNAME)), SUBSTRING(FULLNAME,CHARINDEX(' ',name)+1,len(FULLNAME)) from tableA
于 2013-02-15T09:17:53.320 に答える