2011-07-20 21 views
0

次のC#をms sqlに変換するにはどうすればよいですか?文字列を分割する方法

#region determine if Dimension has length & width 
decimal _dimension = 0; 
string[] xy = new string[1]; 
Dimension = Dimension.ToUpper(); 
if (Dimension.Contains('X')) 
{ 
    xy = Dimension.Split('X'); 
    _dimension = (Convert.ToInt32(xy[0]) * Convert.ToInt32(xy[1])/144); 
} 
else 
{ 
     _dimension = Convert.ToDecimal(Dimension); 
} 
#endregion 


DECLARE @_dimension numeric 
select @_dimension = Dimension 

どのようにアップストリング文字列ですか?

'X'で文字列を分割する方法は?

+4

あなたはまだ何をしようとしたした場合は?意図したとおりに動作していないSQLがありますか?そうでなければ、これは私が言うことは、あなた自身がそれを試して、あなたのためにそれを理解してほしいということは、あなたが怠けているということです。 –

+0

あなたの側で何らかの努力をしていない質問は、コミュニティから否定的な反応を引き起こす傾向があります。将来的には、あなたの試みを投稿してください、または少なくともあなたが最初に立ち往生している理由を説明してください。 –

答えて

1

.ToUpperあなたは、「X」の位置を返すために、ここで使用してT-SQL関数UPPER()に置き換えられ、.ContainsCHARINDEX('X', YourString)のようなものに置き換えることができます - それはゼロよりも大きいなら、それは場所ですでそれが現れる文字列。 .Split()の機能自体に相当するものはありませんが、CHARINDEX()を実行して最初の「X」を見つけ、次に別の「X」を見つけて、その差を取ってSUBSTRING()を実行して、大きな入力からの文字列。

それは意味がありますか?

0

することができます。 1は、下記に示すよう独自のT-SQL関数を作成する必要が分割する

select 
    case when (@_dimension like '%x%') then 
     (cast(left(@_dimension, charindex('X', @_dimension, 1) - 1) as int) 
     * 
     cast(substring(@_dimension, 1 + charindex('X', @_dimension, 1), len(@_dimension)) as int))/144.00 
    else 
     cast(@_dimension as decimal(10, 5)) 
    end 
0

機能SPLITをCREATE (VARCHAR(8000)、@separator VARCHAR(4)@str_in) RETURNS TABLE @strtable(strval VARCHAR(8000))AS BEGIN

DECLARE @Occurrences INT、@Counter INT、@tmpStr VARCHAR(8000)

SET @Counter = 0 IF SUBSTRING(@ str_in、LEN(@ str_in)、1)<> @separator SET @str_in = @str_in + @separator

SETの@Occurrences = (DATALENGTH((@ str_in、セパレータ@、@セパレータ+ '#' をREPLACE)) - DATALENGTH(@str_in))/ DATALENGTH(@separator)SET @tmpStr = @str_in

@Counter < = @Occurrences @strtable VALUES( SUBSTRING(@ tmpStr、1、CHARINDEX(@separatorにセット@Counter = @Counter + 1 INSERTをBEGIN WHILE 、@ tmpStr)-1))

SET @tmpStr = SUBSTRING(@ tmpStr、CHARINDEX(@セパレータ、@ tmpStr)+1,8000)

はDATALENGTH(@tmpStr)= 0 BREAK

ENDの返りEND

関連する問題