私は値を持つテーブルを持っています。それはntextです。区切られた値は空白、1つの数字、セミコロンで区切られた数字(図のように)文字列の値を表示します。最初の値だけを表示
私はこのコードを持っています。サブストリングは探しています。最初の値を示します。値が区切られている場所でのみ動作します。だから私はそれをどのように変えることができます、それは最初の価値を示すでしょう。また単一の値。だからテーブルのベローから私は64,60008, ,127
を取得します。
SELECT
T0.U_Scid as 'id',
T3.U_Boarding as 'start',
T3.U_Boarding as 'end',
SUBSTRING(T5.U_Partner, 0, CHARINDEX(';', T5.U_Partner)) AS 'room_id',
CASE WHEN datalength(T5.U_Partner)=0 THEN '9999' ELSE T5.U_Partner END AS 'room_id' ,
CASE WHEN datalength(T5.U_Partner) > 4 THEN T5.U_Partner ELSE '9999' END AS 'partners_id' ,
これは単なるボーナスの質問です。 CASEは、値が4(600008)より大きい場合は値の長さを検索し、room_id 9999に書き込み、600008をpartners_idに保存します。空の場合は9999をroom_idに書き込みます。
それは一緒に働くようにするには?.so T_Partnerから値を取得する..テンポラリテーブルT1.TempRoom(私は).. so T1.TempRoom(64、、60008,127のような数字で埋まっている) CASEはT1.TempRoomに値をチェックし、それをroom_idとpartners_idに保存します。
私は正しいですか?
SUBSTRING(T5.U_Partner, 1, CHARINDEX(';', T5.U_Partner + ';')) AS room_id,
CHARINDEX()
の引数にセミコロンを連結し、次のとおりです。ここで
データ型:
あなたは常に冗長な形式を使用することができます。 – Burco
@Burco。 。 。私はあなたのコメントが何を指しているのか分かりません。 SQL Serverでは、文字列の連結および追加に '+'が使用されます。 –
私は知っています。しかし、私はこのエラーメッセージを受け取ります。 + 'を削除すると、以前と同じようにすべてが機能しています。したがって、数値が区切られたテキストの値のみを表示してください。単一の値ではありません。 – Burco