16

区切り文字の前の文字列の左側の部分を取得し、新しい文字列を新しい列に配置するには、SSIS 式が必要です。派生列をチェックインしましたが、そのような式はないようです。Substring固定長の文字列部分のみを返すことができました。

たとえば、区切り文字列の場合-:

Art-Reading                Should return Art
Art-Writing                Should return Art
Science-chemistry          Should return Science

PSこれはMySQLでSUBSTRING_INDEX().

4

4 に答える 4

29

遅くなるよりはましですが、私もこれをやりたいと思っていて、これを見つけました。

TOKEN(character_expression, delimiter_string, occurrence)

TOKEN("a little white dog"," ",2)

ソースは以下のとおりです。

http://technet.microsoft.com/en-us/library/hh213216.aspx

于 2014-01-16T05:48:02.300 に答える
25

もちろん、次のことができます。

ここに画像の説明を入力

次のように派生列を構成するだけです。

ここに画像の説明を入力

これがあなたの人生を楽にする表現です:

SUBSTRING(name,1,FINDSTRING(name,"-",1) - 1)

参考までに、2 番目の「1」は、文字列「-」の最初の出現を取得することを意味します。

編集:「-」なしの文字列を処理する式

FINDSTRING(name,"-",1) != 0 ? (SUBSTRING(name,1,FINDSTRING(name,"-",1) - 1)) : name
于 2012-06-07T09:27:10.547 に答える
9

関数でコピーする長さを指定しSUBSTRING、ダッシュの位置を確認するには、CHARINDEX

SELECT SUBSTRING(@sString, 1, CHARINDEX('-',@sString) - 1)

SSIS 式の場合は、ほとんど同じコードです。

SUBSTRING(@[User::String], 1, FINDSTRING(@[User::String], "-", 1)-1)
于 2012-06-06T20:30:40.093 に答える
2

SUBSTRING の長さパラメーターが -1 を返す場合、「長さ -1 は関数 "SUBSTRING" では無効です。長さパラメーターを負にすることはできません。長さパラメーターをゼロまたは正の値に変更してください。」というエラーが発生します。

于 2015-09-24T06:43:01.010 に答える