<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SQL Server (και άλλες databases)</title><link>https://www.dotnetzone.gr:443/cs/forums/28/ShowForum.aspx</link><description>Θέματα που αφορούν τον SQL Server (7.0, 2000, 2005) αλλά και Oracle, Access, DB2, MySQL, κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Boήθεια με Insert into</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61681.aspx</link><pubDate>Thu, 16 Dec 2010 00:24:32 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61681</guid><dc:creator>spaceman</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61681.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=61681</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;neoklis:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Το αποτέλεσμα είτε με udf, είτε με custom θα είναι το ίδιο. Ποιές όμως είναι διαφορές τους..; Με ποιά κριτήρια διαλέγει κάποιος αν θα χρησιμοποιήσει την μία ή άλλη λύση..; Έχει να να κάνει με την ταχύτητα εκτέλεσης;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;It depends (i hate this answer, but it is true). Εχεις x λυσεις για το προβλημα σου, οποτε τις δοκιμαζεις&amp;nbsp;ολες και&amp;nbsp;καταληγεις σε αυτην που καλυτερα εξυπηρετει τον σκοπο σου, χωρις φυσικα να αποκλειεις τις υπολοιπες λυσεις &lt;STRONG&gt;ιδιως για μελλοντικη χρηση&lt;/STRONG&gt; οταν ο ογκος των δεδομενων κ το περιβαλλον της βασης αλλαζει. Ο χρονος εκτελεσης μπορει να ειναι ή να μην ειναι ενα απο τα κριτηρια επιλογης. Ο χρονος εκτελεσης ειναι "σχετικος" : πχ.&amp;nbsp;φορτωνεις bulk δεδομενα (εκατομμυρια εγγραφες) στις 4 το πρωι και οι χρηστες&amp;nbsp;συνδεονται στην βαση στις 8:30 το πρωι. Μεσα σε ενα χρονικο περιθωριο 4.5 ωρων εχει ιδιαιτερο νοημα αν η διεργασια εισαγωγης δεδομενων χρειαζεται 1 λεπτο, 1 ωρα , 2 ωρες κοκ ? Στις 8:30 οι χρηστες θα εχουν τα δεδομενα τους κ everyone is happy.&lt;BR&gt;Στο παραδειγμα με το concatenation, εστω οτι πρεπει να "συνδεσεις-ενωσεις" εγγραφες για/σε 10 διαφορετικους πινακες. Αν επιλεξεις την tsql udf&amp;nbsp;τοτε θα πρεπει να εχεις 10 διαφορετικες functions ενω απο την αλλη η/μια custom aggregate μπορει να χρησιμοποιηθει και για τους 10 πινακες. Η συντηρηση του κωδικα μπορει να ειναι ενα επιπλεον κριτηριο.&lt;BR&gt;Φυσικα η "πλατφορμα" στην οποια βρισκεται η βαση (hardware &amp;amp; software) ειναι ενα προσθετο κριτηριο.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Σε ενα γρηγορο τεστ για τις λυσεις που εχουν προαναφερθει, σε πινακα με 280Κ εγγραφες, περιπου 4000 unique ids (extreme conditions id with 4000 or 2000&amp;nbsp;records to be concatenated)&amp;nbsp;ο χρονος εκτελεσης ηταν:&lt;BR&gt;FOR XML PATH() : fastest - 11 secs (parallelism kicked in)&lt;BR&gt;Custom aggregate: 24 secs (no parallelism)&lt;BR&gt;UDF : over 1 minute (udfs kill parallelism in general)&lt;/P&gt;
&lt;P&gt;Σε γενικες γραμμες, οι scalar udfs στο select, εκτελουνται row by row on a single thread&amp;nbsp;και "σκοτωνουν"&amp;nbsp; τα parallel execution plans.&lt;BR&gt;Στο παρελθον, εχω χρησιμοποιησει tsql udf, για complicated string comparisons και ηταν "αποδοτικη". Καποια στιγμη, οταν ο πινακας ξεπερασε το 1 εκατομμυριο εγγραφες, ο χρονος εκτελεσης αυξηθηκε δραματικα (table scan needed whatsoever). Αντικαταστησαμε την tsql udf&amp;nbsp;με CLR κ ο χρονος εκτελεσης επεσε στο 1 sec (table scan as usual but 16 parallel streams kicked in).&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Κανε τα δικα σου tests, στο δικο σου περιβαλλον και επελεξε την λυση που ικανοποιει τις προδιαγραφες σου και με την οποια αισθανεσαι πιο "ανετα" και μπορεις να την υποστηριξεις. Στην τελικη, ΕΣΥ θα εισαι ο υπευθυνος οταν ο κωδικας χρησιμοποιηθει σε production και κανεις αλλος, οποτε ο τροπος με τον οποιο προσεγγιζεις αλλαγες στον κωδικα, urgent fixes κτλ θα πρεπει να ειναι ενα απο τα κριτηρια επιλογης της "καλυτερης" λυσης.&lt;/P&gt;
&lt;P&gt;--ΗΤΗ--&lt;/P&gt;</description></item><item><title>Απ: Boήθεια με Insert into</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61679.aspx</link><pubDate>Wed, 15 Dec 2010 22:24:25 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61679</guid><dc:creator>neoklis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61679.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=61679</wfw:commentRss><description>&lt;P&gt;Αντώνη σε ευχαριστώ για τον χρόνο σου.&lt;/P&gt;
&lt;P&gt;Σαν συνέχεια έχω μια ερώτηση και για αυτό άνοιξα νέο θέμα.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.dotnetzone.gr/cs/forums/thread/61678.aspx"&gt;http://www.dotnetzone.gr/cs/forums/thread/61678.aspx&lt;/A&gt;&lt;/P&gt;</description></item><item><title>Απ: Boήθεια με Insert into</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61671.aspx</link><pubDate>Wed, 15 Dec 2010 20:59:44 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61671</guid><dc:creator>Antonios Chatzipavlis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61671.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=61671</wfw:commentRss><description>&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Το τελικό αποτέλεσμα φυσικά θα είναι το ίδιο. Πάντα υπάρχουν αρκετοί τρόποι για να φτάσεις σε αυτό. Στην πληροφορική δεν υπάρχουν μονόδρομοι, απλά κάποιος είναι θεωρητικά ο καλύτερος.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Καταρχή να προσθέσω κάτι στο παράδειγμα του spaceman για να είναι ορθή 100% η λύση. Θα πρέπει να έχεις ενεργοποιήσεις το CLR Integration στον SQL Server για να σου παίξει η λύση αυτή. Μπορείς να το κάνεις με το εξής script από τον SSMS:&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Sp_&lt;SPAN style="mso-ansi-language:EN-US;"&gt;configure ‘clr enabled’,1&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;go&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;reconfigure&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;&lt;FONT size=3 face=Calibri&gt;go&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Στην ουσία αυτό το μόνο που κάνει είναι να κόβει την δυνατότητα στο SQL Server να παίζει σε &lt;SPAN style="mso-ansi-language:EN-US;"&gt;Windows&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;fiber mode (&lt;SPAN style="mso-ansi-language:EN-US;"&gt;lightweight&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;pooling&lt;/SPAN&gt;) όσον αφορά το context switching στο SQLOS.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Αυτό σημαίνει πρακτικά ότι αν ενεργοποιήσεις σε ένα server το &lt;SPAN style="mso-ansi-language:EN-US;"&gt;fiber&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;mode&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;(αν και η Ms δεν το συνιστά) κάποια όμορφα πραγματάκια θα κρεμάσουν όπως τα &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN;"&gt;HierarchyID&lt;/SPAN&gt;, &lt;SPAN style="mso-ansi-language:EN;"&gt;Geometry&lt;/SPAN&gt;, &lt;SPAN style="mso-ansi-language:EN;"&gt;Geography&lt;/SPAN&gt; data types , &lt;SPAN style="mso-ansi-language:EN;"&gt;Declarative&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN;"&gt;Management&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN;"&gt;Framework&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN;"&gt;and&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN;"&gt;Change&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN;"&gt;Data&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN;"&gt;Capture&lt;/SPAN&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Όσον αφορά τώρα το ερώτημα σου υπάρχει μια σειρά από tips που έχει δώσει η Microsoft για το πότε ή όχι να χρησιμοποιείται το &lt;SPAN style="mso-ansi-language:EN-US;"&gt;SQL&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;Server&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;CLR &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-ansi-language:EN-US;"&gt;Integration&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Όταν έχουμε να ασχοληθούμε αποκλειστικά με data τότε προτιμούμε παραδοσιακούς τρόπους όπως transact-sql και όχι clr. &lt;SPAN style="mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Εάν όμως έχουμε διαδικασίες που είναι cpu intensive ή θέλουμε να προσπελάσουμε πράγματα εκτός sql server πχ&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;file system, registry, ή&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;έχουμε διαδικασίες που με t-sql είτε είναι δύσκολες στην υλοποίηση είτε είναι κακές σε επιδόσεις τότε πάμε με clr. &lt;SPAN style="mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Εξάλλου το clr μας δίνει ένα σαφώς καλύτερο προγραμματιστικό μοντέλο το οποίο σε συνδυασμό με το βελτιωμένο security που έχει, αλλά και τις δυνατότητες να ορίσω &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;δικά μου aggregations, data types κλπ είναι σαφώς ένα δυνατό όπλο στην φαρέτρα του database developer.&lt;SPAN style="mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Για όλα αυτά αλλά και για το performance μπορείς να δεις το παρακάτω link το οποίο είναι από το 2005 αλλά είναι επίκαιρο και για τις επόμενες εκδόσεις.&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;http://msdn.microsoft.com/en-us/library/ms345136(SQL.90).aspx&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Boήθεια με Insert into</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61659.aspx</link><pubDate>Wed, 15 Dec 2010 18:25:48 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61659</guid><dc:creator>neoklis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61659.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=61659</wfw:commentRss><description>&lt;P&gt;Τι να πω spaceman.. έχω μέινει άφωνος.. Δεν έχω παίξει στο παρελθόν με custom aggregate function και πάντα είχα στο πίσω μέρος του μυαλού μου κάποια στιγμή να το κάνω.. μου έχεις δώσει τα πάντα στο πιάτο.. τι να πώ.. να η ευκαιρεία που έξαχνα.. &lt;/P&gt;
&lt;P&gt;Σ' ευχαριστώ...&lt;/P&gt;
&lt;P&gt;Το αποτέλεσμα είτε με udf, είτε με custom θα είναι το ίδιο. Ποιές όμως είναι διαφορές τους..; Με ποιά κριτήρια διαλέγει κάποιος αν θα χρησιμοποιήσει την μία ή άλλη λύση..; Έχει να να κάνει με την ταχύτητα εκτέλεσης;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>Απ: Boήθεια με Insert into</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61648.aspx</link><pubDate>Wed, 15 Dec 2010 04:20:31 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61648</guid><dc:creator>spaceman</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61648.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=61648</wfw:commentRss><description>&lt;p&gt;Εναλλακτικα (και εφοσον χρησιμοποιεις SQL 2008) θα μπορουσες να χρησιμοποιησεις μια custom aggregate function&lt;/p&gt;&lt;pre&gt;&lt;span style="color:black;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;&lt;pre&gt;&lt;span style="color:black;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;using&lt;/span&gt; System;
&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;using&lt;/span&gt; System.Data;
&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;using&lt;/span&gt; Microsoft.SqlServer.Server;
&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;using&lt;/span&gt; System.Data.SqlTypes;
&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;using&lt;/span&gt; System.IO;
&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;using&lt;/span&gt; System.Text;

[Serializable]
[SqlUserDefinedAggregate
    (
        Format.UserDefined, &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;//use clr serialization to serialize the intermediate result, Binary Serialization - StringBuilder&lt;/span&gt;
        IsInvariantToNulls &lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;=&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;true&lt;/span&gt;, &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;//optimizer property, true= nulls do not change the result&lt;/span&gt;
        IsInvariantToDuplicates &lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;=&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;false&lt;/span&gt;, &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;//optimizer property, false = duplicates change the final result&lt;/span&gt;
        IsInvariantToOrder &lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;=&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;false&lt;/span&gt;, &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;//optimizer property, false = order changes the result&lt;/span&gt;
        MaxByteSize &lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;=&lt;/span&gt; -1 &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;//maximum size in bytes of persisted value, -1 = size up to 2GB&lt;/span&gt;
    )
]


&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;public&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;class&lt;/span&gt; Concatenate : IBinarySerialize
{
    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// The variable that holds the intermediate result of the concatenation&lt;/span&gt;
    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;private&lt;/span&gt; StringBuilder intermediateResult;
    &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;private&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;string&lt;/span&gt; _delimiter &lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;=&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;null&lt;/span&gt;;
    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// Initialize the internal data structures&lt;/span&gt;
    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;public&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;void&lt;/span&gt; Init()
    {
        &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;this&lt;/span&gt;.intermediateResult &lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;=&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;new&lt;/span&gt; StringBuilder();
        &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;this&lt;/span&gt;._delimiter &lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;=&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;null&lt;/span&gt;;
    }

    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// Accumulate the next value, not if the value is null&lt;/span&gt;
    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// &amp;lt;param name="value"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// &amp;lt;param name="delimiter"&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;
    &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;public&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;void&lt;/span&gt; Accumulate(SqlString value, SqlString delimiter)
    {
        &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;if&lt;/span&gt; (value.IsNull &lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;|&lt;/span&gt; delimiter.IsNull)
        {
            &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;return&lt;/span&gt;;
        }
        &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;if&lt;/span&gt; (&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;this&lt;/span&gt;._delimiter == &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;null&lt;/span&gt;)
        {
            &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;this&lt;/span&gt;._delimiter &lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;=&lt;/span&gt; delimiter.Value;
        }

        &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;this&lt;/span&gt;.intermediateResult.Append(delimiter.Value).Append(value.Value);
    }

    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// Merge the partially computed aggregate with this aggregate.&lt;/span&gt;
    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// &amp;lt;param name="other"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;
    &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;public&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;void&lt;/span&gt; Merge(Concatenate other)
    {
        &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;if&lt;/span&gt; (&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;this&lt;/span&gt;._delimiter == &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;null&lt;/span&gt;)
        {
            &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;this&lt;/span&gt;._delimiter &lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;=&lt;/span&gt; other._delimiter;
        }
            &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;this&lt;/span&gt;.intermediateResult.Append(other.intermediateResult.ToString());
    }

    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// Called at the end of aggregation, to return the results of the aggregation.&lt;/span&gt;
    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    &lt;span style="color:green;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;
    &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;public&lt;/span&gt; SqlString Terminate()
    {
        &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;string&lt;/span&gt; output &lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;=&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;null&lt;/span&gt;;

        &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;if&lt;/span&gt; (&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;this&lt;/span&gt;.intermediateResult !&lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;=&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;null&lt;/span&gt;
            &amp;amp;&amp;amp; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;this&lt;/span&gt;.intermediateResult.Length &amp;gt; 0)
        {
            output &lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;=&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;this&lt;/span&gt;.intermediateResult.ToString().Remove(0, &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;this&lt;/span&gt;._delimiter.Length);
        }

        &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;return&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;new&lt;/span&gt; SqlString(output);
    }

    &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;public&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;void&lt;/span&gt; Read(BinaryReader r)
    {
      &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;this&lt;/span&gt;._delimiter &lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;=&lt;/span&gt; r.ReadString();
      &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;this&lt;/span&gt;.intermediateResult &lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;=&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;new&lt;/span&gt; StringBuilder(r.ReadString());
    }

    &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;public&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;void&lt;/span&gt; Write(BinaryWriter w)
    {
        w.Write(&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;this&lt;/span&gt;._delimiter);
        w.Write(&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;this&lt;/span&gt;.intermediateResult.ToString());
    }
}&lt;/span&gt;&lt;/pre&gt;      &lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Build the project (υποθετωντας με ονομα MyConcatenateProject)&amp;nbsp; &lt;/p&gt;
&lt;p&gt;και deploy στον SQL Server ή χρησιμοποιεις T-SQL&lt;/p&gt;
&lt;p&gt;πχ&lt;/p&gt;&lt;pre&gt;&lt;span style="color:black;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;CREATE&lt;/span&gt; ASSEMBLY MyConcatenateProject &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;AUTHORIZATION&lt;/span&gt; dbo &lt;br&gt;&lt;/span&gt;&lt;span style="color:black;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;&lt;span style="color:black;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;&lt;span style="color:teal;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;--pay attention to authorization especially if a sql login is the db owner and the database is moved to another server(assembly owner conflict)&lt;/span&gt;&lt;/span&gt;
&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;FROM&lt;/span&gt; &lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;'c:\MyConcatenateProject.dll'&lt;/span&gt;
&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;WITH&lt;/span&gt; PERMISSION_SET = SAFE&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;κ στην συνεχεια δημιουργεις την sql aggregate function&lt;/p&gt;&lt;pre&gt;&lt;span style="color:black;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;CREATE&lt;/span&gt; AGGREGATE dbo.fn_concatit(@value &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;NVARCHAR&lt;/span&gt;(&lt;span style="color:fuchsia;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;MAX&lt;/span&gt;), @delimiter &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;NVARCHAR&lt;/span&gt;(50)) 
RETURNS &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;NVARCHAR&lt;/span&gt;(&lt;span style="color:fuchsia;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;MAX&lt;/span&gt;)  
EXTERNAL NAME MyConcatenateProject.Concatenate &lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;την οποια χρησιμοποιεις οπως τις system aggregate functions (MAX(), COUNT(), AVG() κτλ)&lt;/p&gt;
&lt;p&gt;πχ.&lt;/p&gt;&lt;pre&gt;&lt;span style="color:black;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;select&lt;/span&gt; id,  dbo.fn_concatit(description, N&lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;','&lt;/span&gt;) &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;as&lt;/span&gt; mydescription 
&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;from&lt;/span&gt; dbo.myTable
&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;group&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;by&lt;/span&gt; id&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Η custom aggregate function δεν ειναι bound σε κανενα πινακα (η tsql udf ειναι) οποτε προσφερει μια ποιο "γενικη" λυση.&lt;/p&gt;
&lt;p&gt;Φυσικα το προβλημα με το order by λυνεται με μη-συμβατικο τροπο :&lt;/p&gt;&lt;pre&gt;&lt;span style="color:black;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;SELECT&lt;/span&gt; id, dbo.fn_concatit(t.description, N&lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;','&lt;/span&gt;)
&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;FROM&lt;/span&gt; 
(
	&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;SELECT&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;TOP&lt;/span&gt; 100 &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;PERCENT&lt;/span&gt; id, description, order_fld
	&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;FROM&lt;/span&gt; dbo.mytable
	&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;GROUP&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;BY&lt;/span&gt; id, order_fld, description
	&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;ORDER&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;BY&lt;/span&gt; id, order_field
) &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;AS&lt;/span&gt; t
&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;GROUP&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;BY&lt;/span&gt; t.id &lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;ή&lt;/p&gt;&lt;pre&gt;&lt;span style="color:black;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;&lt;span style="color:teal;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;--&lt;/span&gt;
&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;SELECT&lt;/span&gt; t.id, dbo.fn_concatit(t.description, N&lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;','&lt;/span&gt;)
&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;FROM&lt;/span&gt; 
(	&lt;span style="color:teal;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;--not that elegant but it does the trick&lt;/span&gt;
	&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;SELECT&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;TOP&lt;/span&gt; (99.999999999999) &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;PERCENT&lt;/span&gt; id, description, order_fld
	&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;FROM&lt;/span&gt; dbo.mytable
	&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;ORDER&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;BY&lt;/span&gt; id, order_field
) &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;AS&lt;/span&gt; t
&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;GROUP&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;BY&lt;/span&gt; t.id 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;ή&lt;/p&gt;
&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;SELECT&lt;/span&gt; t.id, dbo.fn_concatit(t.description, N&lt;span style="color:red;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;','&lt;/span&gt;)
&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;FROM&lt;/span&gt; 
(	&lt;span style="color:teal;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;--not that elegant but it does the trick&lt;/span&gt;
	&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;SELECT&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;TOP&lt;/span&gt; (9223372036854775807) id, description, order_fld
	&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;FROM&lt;/span&gt; dbo.mytable
	&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;ORDER&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;BY&lt;/span&gt; id, order_field
) &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;AS&lt;/span&gt; t
&lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;GROUP&lt;/span&gt; &lt;span style="color:blue;font-family:Courier New;font-size:11px;font-weight:normal;background-color:transparent;"&gt;BY&lt;/span&gt; t.id &lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Ο κωδικας για την CLR (με hardcoded delimiter το κομμα ",")&amp;nbsp;προσφερεται&amp;nbsp;στα samples του SQL Server :&amp;nbsp; &lt;a href="http://msdn.microsoft.com/en-us/library/ms131056.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms131056.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;--ΗΤΗ--&lt;/p&gt;</description></item><item><title>Απ: Boήθεια με Insert into</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61635.aspx</link><pubDate>Tue, 14 Dec 2010 22:57:03 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61635</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61635.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=61635</wfw:commentRss><description>Εγώ θα πρότεινα να μαρκάρεις όλες τις απαντήσεις που σε βοήθησαν η/και δούλεψαν, ανεξαρτήτως αν τις χρησιμοποίησες τελικά ή οχι.&lt;div&gt;&lt;br&gt;&lt;/div&gt;</description></item><item><title>Απ: Boήθεια με Insert into</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61634.aspx</link><pubDate>Tue, 14 Dec 2010 22:43:55 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61634</guid><dc:creator>neoklis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61634.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=61634</wfw:commentRss><description>&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Τελικά χρησιμοποίησα την δικιά σου &lt;SPAN style="mso-ansi-language:EN-US;"&gt;udf&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;τροποποιημένη από τον &lt;SPAN style="mso-ansi-language:EN-US;"&gt;spaceman&lt;/SPAN&gt;, γιατί είναι διαδικασία που θα επαναλαμβάνετε σε καθημερινή βάση... μήπως πρέπει να μαρκάρω και την δική σου βοήθεια ως απάντηση...; &lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Χμμ.. μάλλον έτσι πρέπει να κάνω...&lt;/FONT&gt;&lt;/P&gt;</description></item><item><title>Απ: Boήθεια με Insert into</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61618.aspx</link><pubDate>Tue, 14 Dec 2010 21:32:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61618</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61618.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=61618</wfw:commentRss><description>Τελικά neoklis τι εκ των τριών λύσεων (udf, cursor, for xml) επέλεξες να χρησιμοποιήσεις και για ποιούς λόγους;&amp;nbsp;</description></item><item><title>Απ: Boήθεια με Insert into</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61611.aspx</link><pubDate>Tue, 14 Dec 2010 20:50:02 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61611</guid><dc:creator>neoklis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61611.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=61611</wfw:commentRss><description>Ευχαριστώ για την βοήθεια...</description></item><item><title>Απ: Boήθεια με Insert into</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61577.aspx</link><pubDate>Tue, 14 Dec 2010 00:07:49 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61577</guid><dc:creator>neoklis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61577.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=61577</wfw:commentRss><description>&lt;P&gt;Υπάρχει μία περίπτωση (θα την εξετάσω) οι εγγραφές στον πίνακα να είναι με την σωστή αλληλουχία..&amp;nbsp;όπως και να έχει όμως, η επισήμανση για το order by μ' άρεσε πάρα πολύ!&lt;/P&gt;</description></item><item><title>Απ: Boήθεια με Insert into</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61576.aspx</link><pubDate>Tue, 14 Dec 2010 00:02:06 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61576</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61576.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=61576</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;spaceman:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-family:'Courier New';font-size:11px;white-space:pre;"&gt;&lt;span style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;CREATE&lt;/span&gt; &lt;span style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;TABLE&lt;/span&gt; dbo.myTable(clusterkey_desc &lt;span style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;INT&lt;/span&gt; &lt;span style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;IDENTITY&lt;/span&gt;(1,1), id &lt;span style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;int&lt;/span&gt;, description &lt;span style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;nvarchar&lt;/span&gt;(&lt;span style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:fuchsia;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;max&lt;/span&gt;))&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style="background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;&lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;CREATE&lt;/span&gt; &lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;CLUSTERED&lt;/span&gt; &lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;INDEX&lt;/span&gt; clidx_clusterkey &lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;ON&lt;/span&gt; dbo.myTable(clusterkey_desc &lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;DESC&lt;/span&gt;)&lt;span style="background-color:transparent;font-family:'Courier New';color:teal;font-size:11px;font-weight:normal;"&gt;--for any reason&lt;/span&gt;
&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family:Tahoma, Verdana, Arial, Helvetica, sans-serif;white-space:normal;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span" style="font-family:Tahoma, Verdana, Arial, Helvetica, sans-serif;white-space:normal;"&gt;...&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Σωστά. Προφανές αλλά αγνοηθέν! Αν η σειρά με την οποία κάνεις το concatenation παίζει ρόλο, τότε χρειάζεσαι ένα order by, εκτός αν το natural order σε καλύπτει.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;</description></item><item><title>Απ: Boήθεια με Insert into</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61575.aspx</link><pubDate>Mon, 13 Dec 2010 23:59:29 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61575</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61575.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=61575</wfw:commentRss><description>Αν προτιμήσεις τελικά UDF, προτίμησε τη διορθωμένη έκδοση του spaceman (σε παραπάνω post περιγράφω τα σφάλματα που είχε η δική μου).&lt;div&gt;&lt;br&gt;&lt;/div&gt;</description></item><item><title>Απ: Boήθεια με Insert into</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61574.aspx</link><pubDate>Mon, 13 Dec 2010 23:58:45 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61574</guid><dc:creator>spaceman</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61574.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=61574</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="http://www.dotnetzone.gr/cs/Themes/default/images/icon-quote.gif"&gt; &lt;strong&gt;cap:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;FONT class=Apple-style-span color=#0000ff&gt;&lt;SPAN class=Apple-style-span&gt;&lt;FONT class=Apple-style-span face="Tahoma, Verdana, Arial, Helvetica, sans-serif"&gt;&lt;SPAN style="WHITE-SPACE:normal;" class=Apple-style-span&gt;Το order by φαντάζομαι οτι είναι για performance reasons; Αν οχι, θα ήθελα να γνωρίζω και εγώ γιατί πρέπει να έχουμε order by.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:black;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;TABLE&lt;/SPAN&gt; dbo.myTable(clusterkey_desc &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;INT&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;IDENTITY&lt;/SPAN&gt;(1,1), id &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;int&lt;/SPAN&gt;, description &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;nvarchar&lt;/SPAN&gt;(&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:fuchsia;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;max&lt;/SPAN&gt;))
&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;CLUSTERED&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;INDEX&lt;/SPAN&gt; clidx_clusterkey &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;ON&lt;/SPAN&gt; dbo.myTable(clusterkey_desc &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;DESC&lt;/SPAN&gt;)&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:teal;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;--for any reason&lt;/SPAN&gt;

&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;INSERT&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;INTO&lt;/SPAN&gt; dbo.myTable(id, description) &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;VALUES&lt;/SPAN&gt; (1, &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:red;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;'this is'&lt;/SPAN&gt;)
&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;INSERT&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;INTO&lt;/SPAN&gt; dbo.myTable(id, description) &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;VALUES&lt;/SPAN&gt; (1, &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:red;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;'a test for 1'&lt;/SPAN&gt;)
&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;INSERT&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;INTO&lt;/SPAN&gt; dbo.myTable(id, description) &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;VALUES&lt;/SPAN&gt; (2, &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:red;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;'this is'&lt;/SPAN&gt;)
&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;INSERT&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;INTO&lt;/SPAN&gt; dbo.myTable(id, description) &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;VALUES&lt;/SPAN&gt; (2, &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:red;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;'a test for 2'&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;--&lt;FONT face="Courier New"&gt;dbo.fn_concatit without order by = &lt;FONT color=#0000ff size=2&gt;&lt;FONT color=#0000ff size=2&gt;SELECT&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; dbo&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;fn_concatit&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;1&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;::&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;&lt;FONT color=#ff0000 size=2&gt;N'a test for 1 this is' &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;(Sounds like Yoda)&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:black;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;FUNCTION&lt;/SPAN&gt; dbo.fn_concatit (@id &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;int&lt;/SPAN&gt;) returns &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;nvarchar&lt;/SPAN&gt;(&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:fuchsia;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;max&lt;/SPAN&gt;)
&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;as&lt;/SPAN&gt;
&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;BEGIN&lt;/SPAN&gt;
	&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;declare&lt;/SPAN&gt; @val &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;nvarchar&lt;/SPAN&gt;(&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:fuchsia;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;max&lt;/SPAN&gt;)
	
	&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;select&lt;/SPAN&gt; @val =  &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:fuchsia;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;ISNULL&lt;/SPAN&gt;(@val, N&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:red;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;''&lt;/SPAN&gt;) + N&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:red;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;' '&lt;/SPAN&gt; +description
	&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;from&lt;/SPAN&gt; dbo.myTable
	&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;where&lt;/SPAN&gt; id=@id
	&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:teal;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;--there should be an order by here&lt;/SPAN&gt;
	&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;ORDER&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;BY&lt;/SPAN&gt; clusterkey_desc
	&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;return&lt;/SPAN&gt; &lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:fuchsia;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;STUFF&lt;/SPAN&gt;(@val, 1, 1, N&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:red;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;''&lt;/SPAN&gt;)
&lt;SPAN style="BACKGROUND-COLOR:transparent;FONT-FAMILY:Courier New;COLOR:blue;FONT-SIZE:11px;FONT-WEIGHT:normal;"&gt;END&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/FONT&gt;
&lt;P&gt;--&lt;FONT face="Courier New"&gt;dbo.fn_concatit with order by&amp;nbsp; = &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;SELECT&lt;FONT size=2&gt; dbo&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;fn_concatit&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;1&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT color=#808080 size=2&gt;::&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;&lt;FONT color=#ff0000 size=2&gt;N'this is a test for 1'&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;--HTH--&lt;/FONT&gt;&lt;/P&gt;</description></item><item><title>Απ: Boήθεια με Insert into</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61573.aspx</link><pubDate>Mon, 13 Dec 2010 23:52:38 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61573</guid><dc:creator>neoklis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61573.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=61573</wfw:commentRss><description>&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;Επειδή έιναι κάτι που θα επαναλαμβάνετε θα χρησιμοποίησω &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;function&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;.&lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/SPAN&gt;Μέχρι να δω τα νέα ποστ είχα ήδη παίξει με την λύση που μου πρότεινε ο &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;cap&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;. Σε κάποιες περιπτώσεις το &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;description&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;ήταν &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;null&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;και χτύπαγε &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;error&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt; &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;στο &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;return&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;. Και ενώ πειραματιζόμουν για να το διορθώσω, είδα τα νεότερα &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;post&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;. Δοκίμασα &lt;SPAN style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/SPAN&gt;α)&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;return&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-no-proof:yes;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:fuchsia;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;rtrim&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-no-proof:yes;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-no-proof:yes;"&gt;@&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:EN-US;mso-no-proof:yes;"&gt;val&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-no-proof:yes;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-no-proof:yes;"&gt;β)&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR:black;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR:fuchsia;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;left&lt;/SPAN&gt;&lt;SPAN style="COLOR:black;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;(@&lt;/SPAN&gt;&lt;SPAN style="COLOR:black;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;val&lt;/SPAN&gt;&lt;SPAN style="COLOR:black;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:fuchsia;mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;datalength&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;(@&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;val&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;)-1) και στις 2 περιπτώσεις παίζει μια χαρά. &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN:0cm 0cm 10pt;" class=MsoNormal&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;Θα δοκιμάσω και του &lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;mso-ansi-language:EN-US;"&gt;spaceman&lt;/SPAN&gt;&lt;SPAN style="mso-bidi-font-family:Calibri;mso-bidi-theme-font:minor-latin;"&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;</description></item><item><title>Απ: Boήθεια με Insert into</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/61572.aspx</link><pubDate>Mon, 13 Dec 2010 23:42:28 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:61572</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/61572.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=61572</wfw:commentRss><description>Για εκπαιδευτικούς λόγους, ας δούμε τι είχα κάνει λάθος εγώ και τι διορθώθηκε από την έκδοση του spaceman:&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Δική μου udf:&lt;/div&gt;&lt;div&gt;&lt;div style="font-family:Tahoma, Arial, Helvetica;font-size:12px;"&gt;&lt;pre&gt;&lt;span style="color:black;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;CREATE&lt;/span&gt; &lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;FUNCTION&lt;/span&gt; fn_concatit (@id &lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt;) returns &lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;nvarchar&lt;/span&gt;(&lt;span style="color:fuchsia;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;max&lt;/span&gt;)
&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;as&lt;/span&gt;
&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;BEGIN&lt;/span&gt;
	&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;declare&lt;/span&gt; @val &lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;nvarchar&lt;/span&gt;(&lt;span style="color:fuchsia;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;max&lt;/span&gt;)
	
	&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;select&lt;/span&gt; @val = &lt;span style="color:fuchsia;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;coalesce&lt;/span&gt; (@val,&lt;span style="color:red;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;''&lt;/span&gt;) + description + &lt;span style="color:red;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;' '&lt;/span&gt;
	&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;from&lt;/span&gt; myTable
	&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;where&lt;/span&gt; id=@id

	&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;return&lt;/span&gt; &lt;span style="color:fuchsia;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;left&lt;/span&gt;(@val, &lt;span style="color:fuchsia;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;len&lt;/span&gt;(@val)-1)
&lt;span style="color:blue;background-color:transparent;font-family:'Courier New';font-size:11px;font-weight:normal;"&gt;END&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;Διορθωμένη από spaceman:&lt;/div&gt;&lt;div&gt;&lt;font class="Apple-style-span" color="#0000FF"&gt;&lt;span class="Apple-style-span"&gt;&lt;pre style="font-family:Tahoma, Arial, Helvetica;font-size:12px;"&gt;&lt;span style="background-color:transparent;font-family:'Courier New';color:black;font-size:11px;font-weight:normal;"&gt;&lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;CREATE&lt;/span&gt; &lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;FUNCTION&lt;/span&gt; dbo.fn_concatit (@id &lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;int&lt;/span&gt;) returns &lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;nvarchar&lt;/span&gt;(&lt;span style="background-color:transparent;font-family:'Courier New';color:fuchsia;font-size:11px;font-weight:normal;"&gt;max&lt;/span&gt;)
&lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;as&lt;/span&gt;
&lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;BEGIN&lt;/span&gt;
	&lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;declare&lt;/span&gt; @val &lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;nvarchar&lt;/span&gt;(&lt;span style="background-color:transparent;font-family:'Courier New';color:fuchsia;font-size:11px;font-weight:normal;"&gt;max&lt;/span&gt;)
	
	&lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;select&lt;/span&gt; @val =  &lt;span style="background-color:transparent;font-family:'Courier New';color:fuchsia;font-size:11px;font-weight:normal;"&gt;ISNULL&lt;/span&gt;(@val, N&lt;span style="background-color:transparent;font-family:'Courier New';color:red;font-size:11px;font-weight:normal;"&gt;''&lt;/span&gt;) + N&lt;span style="background-color:transparent;font-family:'Courier New';color:red;font-size:11px;font-weight:normal;"&gt;' '&lt;/span&gt; +description
	&lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;from&lt;/span&gt; dbo.myTable
	&lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;where&lt;/span&gt; id=@id
	&lt;span style="background-color:transparent;font-family:'Courier New';color:teal;font-size:11px;font-weight:normal;"&gt;--there should be an order by here&lt;/span&gt;
	
	&lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;return&lt;/span&gt; &lt;span style="background-color:transparent;font-family:'Courier New';color:fuchsia;font-size:11px;font-weight:normal;"&gt;STUFF&lt;/span&gt;(@val, 1, 1, N&lt;span style="background-color:transparent;font-family:'Courier New';color:red;font-size:11px;font-weight:normal;"&gt;''&lt;/span&gt;)
&lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;END&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family:Tahoma, Arial, Helvetica;font-size:12px;"&gt;&lt;span style="background-color:transparent;font-family:'Courier New';color:black;font-size:11px;font-weight:normal;"&gt;&lt;span style="background-color:transparent;font-family:'Courier New';color:blue;font-size:11px;font-weight:normal;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font class="Apple-style-span" face="Tahoma, Verdana, Arial, Helvetica, sans-serif"&gt;&lt;span class="Apple-style-span" style="white-space:normal;"&gt;Το πρώτο λάθος στη δική μου έκδοση ήταν οτι δεν είχε γίνει create στο dbo schema, κάτι το οποίο μπορεί μεν να είναι implied σε ορισμένες περιπτώσεις, αλλά το σωστότερο είναι να δηλώνεται.&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font class="Apple-style-span" face="Tahoma, Verdana, Arial, Helvetica, sans-serif"&gt;&lt;span class="Apple-style-span" style="white-space:normal;"&gt;Το δεύτερο λάθος ήταν ότι δεν χρησιμοποίησα unicode strings στο concatenation (Ν), ενώ στην ουσία επιστρέφω nvarchar.&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font class="Apple-style-span" face="Tahoma, Verdana, Arial, Helvetica, sans-serif"&gt;&lt;span class="Apple-style-span" style="white-space:normal;"&gt;Η χρήση της isnull έναντι της coalesce στο συγκεκριμένο σενάριο δεν ξέρω πού υπερτερεί, ας βοηθήσουν οι υπόλοιποι.&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font class="Apple-style-span" face="Tahoma, Verdana, Arial, Helvetica, sans-serif"&gt;&lt;span class="Apple-style-span" style="white-space:normal;"&gt;Το order by φαντάζομαι οτι είναι για performance reasons; Αν οχι, θα ήθελα να γνωρίζω και εγώ γιατί πρέπει να έχουμε order by.&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font class="Apple-style-span" face="Tahoma, Verdana, Arial, Helvetica, sans-serif"&gt;&lt;span class="Apple-style-span" style="white-space:normal;"&gt;Τελος, το return value από εμένα δεν ήταν σωστό ούτε με τη χρήση της rtrim (μπορεί να έχουμε trailing spaces που να τα χρειαζόμαστε) ούτε με τη χρήση της len (δεν μετράει spaces). Οπότε, αυτό που έκανε ο spaceman είναι να προσθέτει το κάθε space ΠΡΙΝ και όχι μετά, έτσι ωστε το τελικό του string να έχει ένα leading space, το οποίο κόβει με τη βοήθεια της stuff. Αυτό ήταν και το πιό σημαντικό σφάλμα.&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font class="Apple-style-span" face="Tahoma, Verdana, Arial, Helvetica, sans-serif"&gt;&lt;span class="Apple-style-span" style="white-space:normal;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font class="Apple-style-span" face="Tahoma, Verdana, Arial, Helvetica, sans-serif"&gt;&lt;span class="Apple-style-span" style="white-space:normal;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font class="Apple-style-span" face="Tahoma, Verdana, Arial, Helvetica, sans-serif"&gt;&lt;span class="Apple-style-span" style="white-space:normal;"&gt;&lt;br&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="font-family:Tahoma, Arial, Helvetica;font-size:12px;"&gt;&lt;/div&gt;&lt;/div&gt;</description></item></channel></rss>