<?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>Απ: SQL LIKE και SUBSTRING (ανάποδο)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/77251.aspx</link><pubDate>Thu, 17 Sep 2015 20:22:40 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:77251</guid><dc:creator>Panos Kousidis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/77251.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=77251</wfw:commentRss><description>&lt;p&gt;Κάτι τέτοιο έψαχνα Αντώνη, ευχαριστώ πολύ! Ήμουν κοντά με την υλοποίηση του cursor αλλά δε σκέφτηκα ότι δε χρειάζεται καν!&lt;/p&gt;&lt;p&gt;Κάτι αντίστοιχο πιστεύω θα γίνεται και στο datatable στο vs, αλλά θα το βρω αυτό αφού κατάλαβα τη λογική...&lt;/p&gt;&lt;p&gt;Ευχαριστώ κι εσάς Μάρκο και Νίκο για τις προτάσεις και το χρόνο σας!&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;</description></item><item><title>Απ: SQL LIKE και SUBSTRING (ανάποδο)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/77249.aspx</link><pubDate>Thu, 17 Sep 2015 08:08:43 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:77249</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/77249.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=77249</wfw:commentRss><description>&lt;p&gt;Αυτή την ώρα η σύνδεσή μου πάει πιο αργά κι από χελώνα.&lt;/p&gt;&lt;p&gt;@Αντώνης: Απλό σαν το αυγό του Κολόμβου. &lt;/p&gt;&lt;p&gt;&amp;nbsp;Select patternName from PatternTable where charindex(patternName, @checkValue)&amp;gt;0; AAAAGR Why didn't I see that?&lt;br&gt;&lt;/p&gt;</description></item><item><title>Απ: SQL LIKE και SUBSTRING (ανάποδο)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/77248.aspx</link><pubDate>Thu, 17 Sep 2015 07:48:23 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:77248</guid><dc:creator>Antonios Chatzipavlis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/77248.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=77248</wfw:commentRss><description>&lt;div&gt;Νομίζω ότι αυτό είναι καλύτερο από functions &amp;amp; cursors&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;declare&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt; @SARG_VALUES &lt;/font&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;table&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;value &lt;/font&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;nvarchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;100&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;));&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;/font&gt;&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;insert&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;into&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt; @SARG_VALUES &lt;/font&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;values &lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" face="Consolas"&gt;&lt;font color="#ff0000" face="Consolas"&gt;N'ALPHA'&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;),(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" face="Consolas"&gt;&lt;font color="#ff0000" face="Consolas"&gt;N'BETA'&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;),(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" face="Consolas"&gt;&lt;font color="#ff0000" face="Consolas"&gt;N'GAMMA'&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;),(&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" face="Consolas"&gt;&lt;font color="#ff0000" face="Consolas"&gt;N'DELTA'&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;
&lt;/font&gt;&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;declare&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt; @searched_value &lt;/font&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;nvarchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;100&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt; &lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt; &lt;/font&gt;&lt;font color="#ff0000" face="Consolas"&gt;&lt;font color="#ff0000" face="Consolas"&gt;N'BETA3987FF39'&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;/font&gt;&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;declare&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt; @sarg_value &lt;/font&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;nvarchar&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;100&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;
&lt;/font&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;/font&gt;&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;select&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt; @sarg_value &lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt; value&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;+&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" face="Consolas"&gt;&lt;font color="#ff0000" face="Consolas"&gt;'%'&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;from&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt; @SARG_VALUES&lt;/font&gt;&lt;/p&gt;&lt;font face="Consolas"&gt;
&lt;/font&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;/font&gt;&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;where&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt; &lt;/font&gt;&lt;font color="#ff00ff" face="Consolas"&gt;&lt;font color="#ff00ff" face="Consolas"&gt;CHARINDEX&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;value&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;@searched_value&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;1&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;)&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;0&lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt;
&lt;/font&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;/font&gt;&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;select&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt; &lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;*&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt; &lt;/font&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;from&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt; T&lt;/font&gt;&lt;/p&gt;&lt;font face="Consolas"&gt;
&lt;/font&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;/font&gt;&lt;/font&gt;&lt;p&gt;&lt;font color="#0000ff" face="Consolas"&gt;&lt;font color="#0000ff" face="Consolas"&gt;where&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt; col &lt;/font&gt;&lt;font color="#808080" face="Consolas"&gt;&lt;font color="#808080" face="Consolas"&gt;like&lt;/font&gt;&lt;/font&gt;&lt;font face="Consolas"&gt; @sarg_value&lt;/font&gt;&lt;/p&gt;&amp;nbsp;&lt;/div&gt;</description></item><item><title>Απ: SQL LIKE και SUBSTRING (ανάποδο)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/77247.aspx</link><pubDate>Thu, 17 Sep 2015 07:07:02 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:77247</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/77247.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=77247</wfw:commentRss><description>&lt;p&gt;Σκέφτηκα λίγο για το πως θα μπορούσε να βελτιστοποιηθεί η διαδικασία αναζήτησης με χρήση cursors και κατέληξα περίπου σ' αυτό (να δούμε τι θα πει και ο Αντώνης).&lt;br&gt;&lt;br&gt;1) Βρες το index του checkVal που εμφανίζεται ο πρώτος αριθμός και "κόψε" το string σ' αυτό το σημείο, ώστε να υπάρχουν μόνο γράμματα. Έστω checkVal2 η νέα τιμή.&lt;br&gt;&lt;br&gt;2) Άνοιξε έναν cursor για Select patternName from PatternTable where left(patternName,1) = left(checkVal2,1) and len(patternName) &amp;lt;= len(checkVal2) order by patternName desc;&lt;br&gt;&lt;br&gt;Όλο αυτό για να ελαχιστοποίησεις το query space και DESC για να αποφύγεις κακοτοπιές τύπου (QWERTY, QWERTYIO) για τα patterns.&lt;br&gt;&lt;br&gt;3) Φέρε την πρώτη τιμή του result set (έστω patternVal)&lt;br&gt;&lt;br&gt;4) Κάνε σύγκριση του checkVal2 με το patternVal. Αν είναι ίσα, επέστρεψε το patternVal.&lt;br&gt;&lt;br&gt;5) &lt;strike&gt;Αν δεν είναι ίσα, αφαίρεσε ένα χαρακτήρα σπό το τέλος του checkVal2 και πήγαινε ξανά στο βήμα 4. Αν εξαντληθούν οι χαρακτήρες, πήγαινε στο 6&lt;/strike&gt;&lt;br&gt;&lt;br&gt;6) Φέρε την επόμενη τιμή. Αν υπάρχει -&amp;gt; βήμα 4.(*)&lt;br&gt;&lt;br&gt;7) Τέλος&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;(*) Μην ξεχάσεις ν' αποκαταστήσεις την αρχική τιμή του checkVal2, μετά το "κόψιμο" των χαρακτήρων από το τέλος., προκειμένου να προχωρήσεις στην επόμενη σύγκριση.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;[EDIT2]&lt;/p&gt;&lt;p&gt;Ανοησία μου.&amp;nbsp; Το απλό charindex δουλεύει μια χαρά.&lt;br&gt;&lt;/p&gt;</description></item><item><title>Απ: SQL LIKE και SUBSTRING (ανάποδο)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/77246.aspx</link><pubDate>Thu, 17 Sep 2015 04:42:06 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:77246</guid><dc:creator>Antonios Chatzipavlis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/77246.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=77246</wfw:commentRss><description>Αν και υποψιάζομαι πως θα γίνει η χρήση τους εντούτοις θα σου ήταν εύκολο να μας δείξεις πως θα τα χρησιμοποιήσεις αυτά με παραδείγματα;</description></item><item><title>Απ: SQL LIKE και SUBSTRING (ανάποδο)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/77245.aspx</link><pubDate>Thu, 17 Sep 2015 04:30:24 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:77245</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/77245.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=77245</wfw:commentRss><description>&lt;p&gt;Γενικά οι cursors δεν έχουν καλή φήμη και τους αποφεύγω. Βεβαίως, τίποτα δεν είναι κακό όταν χρησιμοποιείται σωστά. Μπορείς να διαβάσεις τι έχει &lt;a href="http://www.sqlschool.gr/blog/are-cursors-evil-or-not-384.aspx"&gt;γράψει και ο Αντώνης για τη χρήση τους&lt;/a&gt;. Προφανώς, όλα εξαρτώνται από το πλήθος των εγγραφών του πίνακα των patterns, αν έχεις κάνει σωστή χρήση των indexes κ.λπ. Όλες τις προτεινόμενες λύσεις μπορείς να τις μετρήσεις μόνο εσύ που έχεις πρόσβαση στα δεδομένα.&lt;/p&gt;&lt;p&gt;Έτσι όπως το βλέπω, η αφαίρεση χαρακτήρων από το τέλος του string είναι προτιμότερη. Φαντάσου πως έχεις δύο patterns (QWERTY, QWERTYIO) και σαν input QWERTYIO4898748239. Προφανώς θέλεις να σου "έρθειι" το δεύτερο. Επίσης, στο ίδιο select για το max length μπορείς να ζητήσεις και το min length των patterns. Έτσι αν κάποιο input δεν ταιριάζει με κάποιο pattern λόγω σφάλματος, θα "τρέξεις" ακόμα λιγότερα selects, μιας και θα είναι ανούσιο να ψάχνεις για strings με λιγότερους χαρακτήρες.&lt;br&gt;&lt;/p&gt;</description></item><item><title>Απ: SQL LIKE και SUBSTRING (ανάποδο)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/77244.aspx</link><pubDate>Wed, 16 Sep 2015 22:07:45 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:77244</guid><dc:creator>Panos Kousidis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/77244.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=77244</wfw:commentRss><description>&lt;p&gt;Χμμ ναι πολύ καλή μου φαίνεται η ιδέα αφαίρεσης χαρακτήρων από το τέλος&lt;br&gt;&lt;/p&gt;&lt;p&gt;Εσύ λες δηλαδή να χρησιμοποιήσω κάτι τέτοιο σε μια function (το LIKE πλέον δε θα χρειάζεται γιατί το string θα γίνει ακριβώς ίδιο):&lt;/p&gt;&lt;p&gt;CREATE FUNCTION [dbo].[GetTblVal] ( @CheckVal VARCHAR(100) )&lt;br&gt;RETURNS VARCHAR(100)&lt;br&gt;AS&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEGIN&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DECLARE @RetVal VARCHAR(100) ,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @iLen INT = LEN(@CheckVal);&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHILE @iLen &amp;gt; 0&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEGIN&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET @CheckVal = SUBSTRING(@CheckVal, 1, @iLen);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT&amp;nbsp; @RetVal = COL1 FROM TBL1 WHERE&amp;nbsp;&amp;nbsp; COL1 = @CheckVal;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF NOT @RetVal IS NULL BREAK;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET @iLen -= 1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETURN @RetVal;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; END;&lt;/p&gt;&lt;p&gt;Παρά με κέρσορα κάτι τέτοιο&lt;/p&gt;&lt;p&gt;CREATE FUNCTION [dbo].[GetTblVal] ( @CheckVal VARCHAR(100) )&lt;br&gt;RETURNS VARCHAR(100)&lt;br&gt;AS&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEGIN&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DECLARE @TBLVAL VARCHAR(100);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DECLARE C CURSOR FOR SELECT&amp;nbsp; COL1 FROM TBL1;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OPEN C;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FETCH NEXT FROM C INTO @TBLVAL;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHILE @@FETCH_STATUS = 0&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEGIN&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF CHARINDEX(@TBLVAL, @CheckVal) &amp;gt; 0 BREAK;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FETCH NEXT FROM C INTO @TBLVAL;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLOSE C;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DEALLOCATE C;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETURN @TBLVAL;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; END;&lt;/p&gt;&lt;p&gt;Στην πρώτη περίπτωση θα γίνουν τόσα select από το table όσοι και οι χαρακτήρες που θα αφαιρεθούν, που μπορούν να μειωθούν αν δω το μήκος του μεγαλύτερου string στον πίνακα και ξεκινήσω από αυτό το νούμερο&lt;br&gt;ενώ στην περίπτωση του cursor θα γίνει ένα select και loop μέσα στα αποτελέσματα μέχρι να βρεθεί το row, εκτός αν o cursor δε λειτουργεί έτσι και απλά θα ήθελα να λειτουργούσε έτσι.&lt;/p&gt;&lt;p&gt;Πάντως όσον αφορά την υλοποίηση στον Client, το πρώτο που μου είχε έρθει είναι το αντίστοιχο του cursor όπου θα κάνω loop μέσα στα datarows, ελέγχοντας εάν το IndexOf αντίστοιχα με το CHARINDEX του SQL είναι &amp;gt; -1&lt;/p&gt;&lt;p&gt;Με το full-text search δεν έχω ασχοληθεί ιδιαίτερα, μόνο ότι χρειάστηκε για το certification 70-461.. Από τα λίγα που διάβασα δε θυμάμαι να είδα κάτι που να μπορούσε να βοηθήσει σε αυτή την περίπτωση καθώς έπαιζε με replacement strings, συνώνυμα και γενικώς "ανώτερου επιπέδου" κατανόηση γλώσσας. Αλλά πως μπορείς να του πεις για ένα άγνωστο string που θα έρθει από το χρήστη και δεν υπάρχει σε κανένα "λεξικό" σου ότι αυτό μπορεί να αντικατασταθεί με κάτι άλλο (BETAXJK@4223 --&amp;gt; BETA)&lt;br&gt;Εκτός αν το είδα τόσο πολύ επιφανειακά το θέμα και έχει κι άλλα κόλπα. Θα το παρακολουθήσω το βιντεάκι γιατί μου κίνησε το ενδιαφέρον, ευχαριστώ!&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Απ: SQL LIKE και SUBSTRING (ανάποδο)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/77242.aspx</link><pubDate>Wed, 16 Sep 2015 05:42:11 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:77242</guid><dc:creator>Antonios Chatzipavlis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/77242.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=77242</wfw:commentRss><description>&lt;p&gt;Μήπως πρέπει να σκεφτείς το &lt;a href="http://www.sqlschool.gr/SqlNight/16/Content.aspx"&gt;full text search&lt;/a&gt;?&lt;/p&gt;
&lt;span&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/span&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Απ: SQL LIKE και SUBSTRING (ανάποδο)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/77241.aspx</link><pubDate>Wed, 16 Sep 2015 05:15:12 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:77241</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/77241.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=77241</wfw:commentRss><description>&lt;p&gt;Μάλλον πρέπει να ξεκινήσεις ανάποδα και να φτιάξεις ένα TSQL Function που θα επιστρέφει ένα value ή ένα table, ανάλογα με το τι θέλεις. Δηλαδή, βάλε το input string "BETAXJK232" σ' ένα loop και κάνε διαδοχικά Select - Like αφαιρώντας έναν χαρακτήρα κάθε φορά από το τέλος, μέχρι να προκύψει αποτέλεσμα. Δηλ. Like "BETAXJK232%",&amp;nbsp; Like "BETAXJK23%", Like "BETAXJK2%", Like "BETAXJK%" κ.ο.κ. Δεν ξέρω μόνο τι θα συμβεί από performance. Αν φορτώνες τα patterns στον client και η σύγκριση γίνεται εκεί, πάλι μπορείς να χρησιμοποιήσεις αυτή την προσέγγιση μιας και το DataColumn expression, που σου ανέφερα παραπάνω, υποστηρίζει τον operator LIKE. Ίσως είναι καλύτερο να δοκιμάσεις και τις δύο προσεγγίσεις για να δεις ποια έχει μικρότερο overhead.&lt;/p&gt;&lt;p&gt;PS: Γιατί να μπλέξεις με cursors? &lt;/p&gt;&lt;p&gt;[EDIT]&lt;/p&gt;&lt;p&gt;Αν πάλι το input string είναι πολύ μεγάλο, μπορείς να κάνεις πρώτα ένα Select Max(Len(patternString)) from YourPatternTable και να "κόψεις" πολλούς χαρακτήρες από το τέλος με την πρώτη δοκιμή.&lt;br&gt;&lt;/p&gt;</description></item><item><title>Απ: SQL LIKE και SUBSTRING (ανάποδο)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/77240.aspx</link><pubDate>Wed, 16 Sep 2015 00:48:00 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:77240</guid><dc:creator>Panos Kousidis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/77240.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=77240</wfw:commentRss><description>&lt;p&gt;Επειδή δεν ήθελα να στηριχτώ σε κάτι μεταβλητό. &lt;/p&gt;&lt;p&gt;Η προσωρινή λύση που έφτιαξα είναι με ένα RegEx να κάνει match από την αρχή του string μέχρι το πρώτο νούμερο που θα βρει, γιατί στην περίπτωσή μου ακολουθεί πάντα νούμερο μετά το "ALPHA", "BETA" και δουλεύει οκ.&lt;/p&gt;&lt;p&gt;Αλλά ήθελα κάτι που να καλύψει και τις περιπτώσεις "BETAXJK232" όπου δε φαίνεται πιο είναι το "καθαρό" κομμάτι του string αλλά ταιριάζει στο row που έχει το BETA%&lt;/p&gt;&lt;p&gt;Μάλλον δεν το γλυτώνω το loop ή τον κέρσορα στον SQL για τέτοιες περιπτώσεις...&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Ευχαριστώ &lt;br&gt;&lt;/p&gt;</description></item><item><title>Απ: SQL LIKE και SUBSTRING (ανάποδο)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/77239.aspx</link><pubDate>Wed, 16 Sep 2015 00:10:48 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:77239</guid><dc:creator>nikos123</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/77239.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=77239</wfw:commentRss><description>Γιατι δεν "καθαριζεις" τη λεξη πριν κάνεις το query, δλδ να αφαιρεσείς το 3987FF39 (εφοσον δε σε ενδιαφέρει αυτο το κομματι)</description></item><item><title>Απ: SQL LIKE και SUBSTRING (ανάποδο)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/77238.aspx</link><pubDate>Tue, 15 Sep 2015 22:54:37 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:77238</guid><dc:creator>Panos Kousidis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/77238.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=77238</wfw:commentRss><description>&lt;p&gt;Ναι ίσως δεν ήμουν πολύ σαφής, οπότε να το διευκρινήσω. Στη δική μου περίπτωση θέλω να γίνει στον client η σύγκριση, αλλά θα ήθελα να ξέρω εάν γίνεται κάπως και στον SQL σε αντίστοιχη περίπτωση&lt;/p&gt;&lt;p&gt;Το table έχει μέσα στην ουσία τα patterns που θέλω να ταιριάξω με ένα value που δίνει ο χρήστης. Δηλαδή, δίνοντας ο χρήστης το string "BETA3987FF39" να μου επιστραφεί το row του Datatable ή του SQL Table που περιέχει το value "BETA". "Ανάποδο like" είπα γιατί στην περίπτωση που τα πράγματα ήταν ανάποδα, δηλαδή ο χρήστης έδινε το string "ΒΕΤΑ" και ο πίνακας είχε μέσα το "BETA3987FF39" τότε θα ήταν εύκολο, θα χρησιμοποιούσα το select ('col1 like ' &amp;amp; userinputstring &amp;amp; '%'). &lt;/p&gt;&lt;p&gt;Τώρα θέλω κάτι αντίστοιχο του 'userinputstring like concat(col1,'%')&amp;nbsp; ώστε στην ουσία το query να μεταφραστεί σε BETA3987FF39 like 'ALPHA%', BETA3987FF39 like 'BETA%', 'BETA3987FF39' like 'GAMMA%' κοκ και να μου επιστρέψει το row που περιέχει μέσα το "BETA"&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Απ: SQL LIKE και SUBSTRING (ανάποδο)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/77237.aspx</link><pubDate>Tue, 15 Sep 2015 22:08:43 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:77237</guid><dc:creator>nikos123</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/77237.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=77237</wfw:commentRss><description>&lt;p&gt;Εννοεις ενα ισοδύναμο σε αυτό;&lt;/p&gt;&lt;p&gt;&amp;nbsp;where (field='B' OR field='BE' OR field='BET' OR field='BETA' OR field='BETA3' ...)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Απ: SQL LIKE και SUBSTRING (ανάποδο)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/77236.aspx</link><pubDate>Tue, 15 Sep 2015 21:52:11 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:77236</guid><dc:creator>Markos</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/77236.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=77236</wfw:commentRss><description>&lt;p&gt;Κάπου σ' έχασα στο: "&lt;i&gt;δηλαδή το ανάποδο από το κλασικό like&lt;/i&gt;".&lt;/p&gt;&lt;p&gt;Κατ' αρχήν, η σύγκριση που θέλεις να γίνεται; Στον server ή στον client; Αν πρόκειται για την δεύτερη περίπτωση, μήπως θα βόλευε να χρησιμοποιήσεις κάποιο &lt;a href="https://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression%28v=vs.110%29.aspx"&gt;datacolumn expression&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;[EDIT]&lt;/p&gt;&lt;p&gt;To string "BETA3987FF39" υπάρχει σε κάποιον πίνακα της βάσης ή το εισάγει ο χρήστης; &lt;/p&gt;</description></item><item><title>SQL LIKE και SUBSTRING (ανάποδο)</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/77234.aspx</link><pubDate>Tue, 15 Sep 2015 20:29:38 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:77234</guid><dc:creator>Panos Kousidis</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/77234.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=77234</wfw:commentRss><description>&lt;p&gt;Καλησπέρα σε όλους,&lt;/p&gt;&lt;p&gt;Θα ήθελα να ρωτήσω την κοινότητα ποιος είναι ο πιο σωστός τρόπος να εκτελέσω μια διαδικασία&lt;/p&gt;&lt;p&gt;Έχω λοιπόν ένα datatable που τα values ενός column που με ενδιαφέρει είναι :&lt;br&gt;&lt;/p&gt;&lt;p&gt;ALPHA&lt;br&gt;BETA&lt;br&gt;GAMMA&lt;br&gt;DELTA&lt;/p&gt;&lt;p&gt;Έχω ένα string "BETA3987FF39" και θέλω μία μέθοδο που να κάνει match το string με το pattern της στήλης + '%', δηλαδή το ανάποδο από το κλασσικό like&lt;/p&gt;&lt;p&gt;Υπάρχει κάποιος τρόπος να γίνει με method της vb όπως πχ table.Select&amp;nbsp; ή θα πρέπει να κάνω loop στα rows του πίνακα και να ελέγχω μία μία τις εγγραφές;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Ευχαριστώ,&lt;br&gt;Πάνος &lt;br&gt;&lt;/p&gt;</description></item></channel></rss>