0

テーブルに as というフィールドがあり、select ステートメントでLastName,FirstName(FromSomewhere)文字列を分離して lastNAme firstname無視する必要があります。(FromSomewhere)どんな助けでも本当に感謝しています。

で試しました

Select substring(
         LEFT(_Owner, charindex('(', _Owner) - 1), 
             charindex(',', _Owner) + 1, len(LEFT(_Owner, cha‌​rindex('(', _Owner) - 1))) 
from CC; 

は私が試したものであり、エラーが発生します

メッセージ 536、レベル 16、状態 5、行 1 無効な長さパラメーターが SUBSTRING 関数に渡されました。

4

3 に答える 3

0

部分文字列の読み取り

長さ

返される式の文字数を指定する正の整数または bigint 式です。長さが負の場合、エラーが生成され、ステートメントが終了します。start と length の合計が expression の文字数より大きい場合は、start で始まる値式全体が返されます。

于 2013-09-20T16:46:49.960 に答える
0

これを 1 回だけ行う限り (データを FirstName と LastName の別々の列に分割するため)、そのようにすることができます。ただし、通常のクエリで次の手法を使用したい場合、パフォーマンスはひどいものになります。

declare @myString nvarchar(200) = 'LastName,FirstName(FromSomewhere)'

select  SUBSTRING(@myString, 1, CHARINDEX(',', @myString, 1) - 1),
        SUBSTRING(@myString, CHARINDEX(',', @myString, 1) + 1, CHARINDEX('(', @myString, 1) - CHARINDEX(',', @myString, 1) - 1)
于 2013-09-20T16:47:20.890 に答える