文字列にSQL Serverの複数行のターン(ユーザーのIdsの役割ステッチ)

質問:複数の役割を持っているT_Userシステムのユーザ、T_UserRoleテーブルの仲間、T_Roleとしてテーブルの役割。

 今すぐ削除のUserListを必要とし、各文字、文字列型スプライシングのユーザー情報を削除します。

 

予選:

T_UserRoleテーブル構造: 

 

STUFFの文字列関数は、別の文字列に文字列です。文字列で指定された長さの開始位置を削除する文字の最初の列は、2番目の文字列は、開始位置に挿入され、構文は以下の通りです。

STUFF(<character_expressionに>、<起動>、<長さ>、<character_expressionに>)
<character_expressionに>パラメータが指定された文字列データは、バイナリデータまたは文字定数、変数、または列であってもよいです。<起動>パラメータは、欠失および挿入の開始位置を指定する整数値である、BIGINT型であってもよいです。<スタート>または<長さ>パラメータが負の場合は、NULL文字列が返されます。<character_expressionに>長い最初のものよりも、パラメータを<スタート>場合は、NULL文字列を返します。<長さ>パラメータには、削除する文字の数を指定する整数であるBIGINTタイプであってもよいです。もし最初より最後の文字<長さ> <character_expressionに>長いし、<character_expressionに>中の最後の発生を削除します。

 

XMLパスのクエリ結果が行に従うXMLフォーマットにエクスポートすることができます。

:あなたはを参照することができますhttps://www.cnblogs.com/yasuo2/p/6433697.html

 

特定の分析:

 1.(キー)中央のオレンジ色の部分のコードは、XML形式のマルチラインのコンテンツに変換されます。個別の重複排除。結果:

 2.コードの黒い部分は、目の前に取り出される「」文字は、文字列関数のものです。

// の簡素化
 // tempXml =6465
、結果出力64を、第一の位置から、//指定された文字列@tempXml 1の長さを除去する、の前に挿入されている「(なし文字) 65。 SELECT スタッフ(tempXml {}、11'' ))
これは、データを望むものです

3. 青い部分ではなく、空の判断。

 

最終的なコード

//最終的なコード
SELECT
tu.Id、 tu.Name としてユーザ名、
ISNULL((選択 のものを((選択 別個 ' ' + CONVERTVARCHAR 、mur.RoleId)
T_UserRole MUR
                                       RIGHT  JOIN T_UserのTUSをON mur.UserId = tus.Id AND mur.IsDel =  0  AND mur.IsUsed =  1つの
                                      LEFT  JOIN T_RoleロールON role.Id = mur.RoleIdを
                              ここ tus.IsDel =  0 
                                tus.Id = tu.Id  role.IsDel =  0   role.IsUsed =  1 
                             FOR XMLのPATH(''))、11'' ))、0 としてRoleIds、 
選択 のものを((選択 別個 ' ' + CONVERTVARCHAR 、role.Nameを) からT_UserRole MUR RIGHT JOIN T_UserのTUSをON mur.UserId = TUS。 ID mur.IsDel = 0 AND mur.IsUsed = 1 LEFTは、JOIN T_Roleの役割を ON role.Id = mur.RoleId AND role.IsDel = 0 AND role.IsUsed = 1 tus.IsDel = 0 tus.Id = tu.Id role.IsDel = 0 role.IsUsed = 1 FOR XMLパス('' ))、11'' ))のようなロール名 からT_User TU tu.IsDelは= 0 ORDER BY tu.CreateTime DESC

結果:

 

おすすめ

転載: www.cnblogs.com/Alioo/p/11728336.html