セパレーターの前の文字列の左部分を取得し、新しい列に新しい文字列を配置するために、SSIS式が必要です。派生列にチェックインしましたが、そのような表現はないようです。 Substring
は、固定長の文字列部分のみを返すことができました。
たとえば、区切り文字列_-
_の場合:
_Art-Reading Should return Art
Art-Writing Should return Art
Science-chemistry Should return Science
_
追伸これはSUBSTRING_INDEX()
を使用してMySQLで実行できることを知っていましたが、SSISまたは少なくともSQL Serverで同等のものを探しています
もちろん次のことができます。
派生列を次のように構成するだけです。
これがあなたの人生を楽にする表現です:
SUBSTRING(name,1,FINDSTRING(name,"-",1) - 1)
参考までに、2番目の「1」は、文字列「-」の最初の出現を取得することを意味します
編集:「-」なしで文字列を処理する式
FINDSTRING(name,"-",1) != 0 ? (SUBSTRING(name,1,FINDSTRING(name,"-",1) - 1)) : name
絶対に遅れるよりはましですが、私もこれをやりたかったので、これを見つけました。
TOKEN(character_expression, delimiter_string, occurrence)
TOKEN("a little white dog"," ",2)
ソースを下にほとんど返さない
SUBSTRING
関数でコピーする長さを指定し、CHARINDEX
を使用してダッシュの場所を確認できます。
SELECT SUBSTRING(@sString, 1, CHARINDEX('-',@sString) - 1)
SSIS式については、ほぼ同じコードです。
SUBSTRING(@[User::String], 1, FINDSTRING(@[User::String], "-", 1)-1)
sUBSTRING length paramが-1を返す場合、「長さ-1は関数 "SUBSTRING"に対して無効です。lengthパラメーターは負にできません。lengthパラメーターをゼロまたは正の値に変更してください。」というエラーが発生します。