{"id":461,"date":"2011-07-28T13:32:44","date_gmt":"2011-07-28T11:32:44","guid":{"rendered":"http:\/\/www.capri-soft.de\/blog\/?p=461"},"modified":"2011-08-09T15:51:43","modified_gmt":"2011-08-09T13:51:43","slug":"ms-sql-server-splitexplode-fur-sql","status":"publish","type":"post","link":"https:\/\/www.capri-soft.de\/blog\/?p=461","title":{"rendered":"MS SQL Server: Split\/Explode f\u00fcr SQL"},"content":{"rendered":"<h1>Aufgabenstellung<\/h1>\n<p>Eine Spalte einer Tabelle beinhaltet eine Auflistung, die durch ein Zeichen getrennt ist. Im Beispiel die Spalte Gruppe. <\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nNr|Gruppe\r\n-------------------------------\r\n1 | Buerste,Besen,Feger\r\n2 | Eier,Salz,Butter\r\n3 | Bier,Schnaps,Wein \r\n<\/pre>\n<p>Es soll nun mit einer Art Split\/Explode wie in PHP die Spalte aufgesplittet werden und einzelne Werte ausgegeben werden<\/p>\n<h1>Ansatz<\/h1>\n<p>Der folgende Code erstellt eine Funktion, die f\u00fcr eine Datenbank gilt. Kopiert man diesen Code in das SQL Server Management Studio und f\u00fchrt ihn mit F5 aus, erh\u00e4lt die ausgew\u00e4hlte Datenbank die Funktion Split.<\/p>\n<h1>L\u00f6sung<\/h1>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nCREATE FUNCTION &#x5B;dbo].&#x5B;split](@String varchar(8000), @Delimiter varchar(12), \r\n                                                 @returnItem int)\r\nRETURNS varchar(8000)\r\nAS\r\nBEGIN\r\n\tDECLARE @id int\r\n\tDECLARE @idx int\r\n\tDECLARE @slice varchar(8000)\r\n\tDECLARE @returnslice varchar(8000)\r\n\r\n\tSET @id = 0\r\n\tSET @idx = 1\r\n\tSET @returnslice = null\r\n\t\r\n\tWHILE @idx!= 0\r\n\tBEGIN\r\n\t\tSET @id = @id + &#039;1&#039;\r\n\t\tSET @idx = charindex(@Delimiter,@String)\r\n\r\n\t\tIF @idx!=0\r\n\t\t\tSET @slice = left(@String,@idx - 1)\r\n\t\tELSE\r\n\t\t\tSET @slice = @String\r\n\r\n\t\tIF @id = @returnItem SET @returnslice = @slice\r\n\t\tSET @String = SUBSTRING(right(@String,len(@String) - @idx),\r\n                                                  len(@Delimiter), len(@String))\r\n\r\n\t\tIF len(@String) = 0 BREAK\r\n\tEND\r\n\tRETURN @returnslice\r\nEND\r\n<\/pre>\n<p>Aufruf mit:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nSELECT dbo.split(&#039;DIES\/IST\/EIN\/TEST&#039;,&#039;\/&#039;,2)\r\n<\/pre>\n<iframe src=\"http:\/\/www.facebook.com\/plugins\/like.php?href=https%3A%2F%2Fwww.capri-soft.de%2Fblog%2F%3Fp%3D461&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light\" scrolling=\"no\" frameborder=\"0\" allowTransparency=\"true\" style=\"border:none; overflow:hidden; width:450px;margin-top:5px;\"><\/iframe>","protected":false},"excerpt":{"rendered":"<p>Aufgabenstellung Eine Spalte einer Tabelle beinhaltet eine Auflistung, die durch ein Zeichen getrennt ist. Im Beispiel die Spalte Gruppe. Nr|Gruppe &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 1 | Buerste,Besen,Feger 2 | Eier,Salz,Butter 3 | Bier,Schnaps,Wein Es soll nun mit einer Art Split\/Explode wie in PHP die Spalte aufgesplittet werden und einzelne Werte ausgegeben werden Ansatz Der folgende Code erstellt eine &hellip; <a href=\"https:\/\/www.capri-soft.de\/blog\/?p=461\" class=\"more-link\"><span class=\"screen-reader-text\">MS SQL Server: Split\/Explode f\u00fcr SQL<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[11],"tags":[],"class_list":["post-461","post","type-post","status-publish","format-standard","hentry","category-ms-sql-server"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4yGeN-7r","jetpack_likes_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/461","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=461"}],"version-history":[{"count":5,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/461\/revisions"}],"predecessor-version":[{"id":463,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/461\/revisions\/463"}],"wp:attachment":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=461"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=461"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=461"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}