ホームページ >データベース >mysql チュートリアル >STRING_SPLIT を使用せずに SQL Server 2012 でカンマ区切りの文字列を分割するにはどうすればよいですか?

STRING_SPLIT を使用せずに SQL Server 2012 でカンマ区切りの文字列を分割するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-11 07:50:421014ブラウズ

How Can I Split Comma-Separated Strings in SQL Server 2012 Without Using STRING_SPLIT?

SQL Server 2012 のカンマ区切り文字列分割: XML ベースのソリューション

SQL Server 2012 の互換性レベルにより、STRING_SPLIT 関数へのアクセスが制限される場合があります。 この記事では、XML テクニックを使用してカンマ区切り値を分割する効果的な回避策を紹介します。

XML と CROSS APPLY の活用

このメソッドは、カンマ区切りの文字列を XML 構造に変換します。 CROSS APPLY は、この XML から各値をノードとして抽出します。 SQL コードは次のとおりです:

<code class="language-sql">SELECT Split.a.value('.', 'NVARCHAR(MAX)') AS DATA
FROM
(
    SELECT CAST('<X>'+REPLACE(@ID, ',', '</X><X>')+'</X>' AS XML) AS String
) AS A
CROSS APPLY String.nodes('/X') AS Split(a);</code>

具体例

次のサンプル パラメータを使用してみましょう:

<code class="language-sql">DECLARE @ID NVARCHAR(300)= '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20';
DECLARE @Marks NVARCHAR(300)= '0,1,2,5,8,9,4,6,7,3,5,2,7,1,9,4,0,2,5,0';</code>

次のクエリは、これらの文字列を分割し、結果をテーブルに挿入する方法を示しています。

<code class="language-sql">INSERT INTO @StudentsMark
SELECT C.id, C1.marks
FROM CTE C
LEFT JOIN CTE1 C1 ON C1.RN = C.RN;</code>

結果

結果は、「id」列と「marks」列を含むテーブルになり、それぞれに @ID@Marks からの分割値が入力されます。

この XML ベースのアプローチは、互換性レベルの制限を回避して、SQL Server 2012 でカンマ区切りデータを処理する信頼性の高い方法を提供します。

以上がSTRING_SPLIT を使用せずに SQL Server 2012 でカンマ区切りの文字列を分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。