<?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>Re: Dynamic SQL WHERE clauses using conditional operators</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/869.aspx</link><pubDate>Sat, 15 Jan 2005 02:59:00 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:869</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/869.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=869</wfw:commentRss><description>Sorry Γιώργο, δεν το πήρα χαμπάρι οτι το δίνανε μόνο στους registered. (Ειχα auto login και το παρέλειψα). Μια και δοθηκε όμως τελικά, δεν το ξαναστέλνω.</description></item><item><title>Re: Dynamic SQL WHERE clauses using conditional operators</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/868.aspx</link><pubDate>Sat, 15 Jan 2005 02:55:49 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:868</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/868.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=868</wfw:commentRss><description>&lt;p&gt;ΠΟΛΥ ΚΑΛΗ ΙΔΕΑ! Και το ωραίο είναι ότι ο optimizer θα εξαφανίσει όλα αυτά τα case πριν τρέξει το query! Μόνο που για να δουλέψει καλά θέλει ένα SQL Optimizer τόσο καλό όσο αυτό του SQL Server. Δεν ξέρω αν θα έπαιζε π.χ. σε Oracle. &lt;img src="/forums//emoticons/emotion-14.gif" alt="Devil" /&gt;&lt;br /&gt;&lt;br /&gt;Το ίδιο κόλπο μπορείς να κάνεις και με το UPDATE για να αποθηκεύσεις μεταβλητό αριθμό πεδίων. Και πολύ το γουστάρω το CASE WHEN!&lt;br /&gt;&lt;br /&gt;Για όσους δεν έχουν συνδρομή στο SqlServerCentral, ιδού το stored procedure:&lt;br /&gt;&lt;br /&gt;&lt;font face="Courier New"&gt;-- Declare some local variables. Actually, we are creating a pair of variables&lt;br /&gt;-- for each column included in our WHERE clause.&lt;br /&gt;-- The first variable represents the value we are filtering and the second&lt;br /&gt;-- represents the "operator" for the filter.&lt;br /&gt;&lt;br /&gt;declare @companyName varchar(255)&lt;br /&gt;declare @companyNameOp varchar(2)&lt;br /&gt;declare @country varchar(255)&lt;br /&gt;declare @countryOp varchar(2)&lt;br /&gt;&lt;br /&gt;-- Let's set some sample values now. The values you see here represent the second&lt;br /&gt;-- of the two scenarios described above, i.e. all records for companies located in Germany,&lt;br /&gt;-- excluding companies starting with the letter A&lt;br /&gt;&lt;br /&gt;-- Operators are defined here with arbitrary, two-letter values. &lt;br /&gt;-- Of course you could define your own set of operators, with different&lt;br /&gt;-- naming conventions. For our example, here's the meaning of each possible&lt;br /&gt;-- value:&lt;br /&gt;&lt;br /&gt;-- ne = not equal&lt;br /&gt;-- eq = equal&lt;br /&gt;-- bg = begins with&lt;br /&gt;-- ed = ends with&lt;br /&gt;-- ct = contains&lt;br /&gt;&lt;br /&gt;-- For our example, we are using only varchar fields in our WHERE clause.&lt;br /&gt;-- It is very easy, though, to define operators for other data types as well.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;set @companyname = 'A%'&lt;br /&gt;set @companynameOp = 'ne'&lt;br /&gt;set @country = 'Germany'&lt;br /&gt;set @countryOp = 'eq'&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-- Ok, now let's form our query. &lt;br /&gt;&lt;br /&gt;select&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; customerid, companyname, country&lt;br /&gt;from &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; customers&lt;br /&gt;where &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case @companyNameOp&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when '' then 1 -- Operator not defined, get everything&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when 'eq' then -- Operator is "equals"&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; case when companyname like @companyName then 1 else 0 end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when 'bg' then -- Operator is "begins with"&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; case when companyname like @companyName +'%' then 1 else 0 end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when 'ed' then -- Operator is "ends with"&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; case when companyname like '%' + @companyName&amp;nbsp; then 1 else 0 end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when 'ct' then -- Operator is "contains"&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; case when companyname like '%' + @companyName&amp;nbsp; +'%' then&lt;br /&gt;1 else 0 end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when 'ne' then -- Operator is "not equal"&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; case when companyname not like @companyName then 1 else 0 end end =1&lt;br /&gt;&lt;br /&gt;AND&lt;br /&gt;&lt;br /&gt;-- Same approach for the second field&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case @countryOp&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when '' then 1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when 'eq' then &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; case when country like @country then 1 else 0 end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when 'bg' then &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; case when country like @country +'%' then 1 else 0 end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when 'ed' then&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; case when country like '%' + @country&amp;nbsp; then 1 else 0 end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when 'ct' then&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; case when country like '%' + @country&amp;nbsp; +'%' then 1 else 0 end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; when 'ne' then&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; case when country not like @country then 1 else 0 end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end =1&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;</description></item><item><title>Re: Dynamic SQL WHERE clauses using conditional operators</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/864.aspx</link><pubDate>Sat, 15 Jan 2005 01:51:59 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:864</guid><dc:creator>George J. Capnias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/864.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=864</wfw:commentRss><description>Καλώς ήλθες,&lt;br /&gt;&lt;br /&gt;Αν θες δημοσίευσε όλο το άρθρο εδώ. Το SQLCentral έχει την περιέργεια να θέλει να έχουν γίνει όλοι registered εκεί και δυστηχώς η διαδικασία τους δεν δουλεύει αυτοματοποιημένα/γρήγορα... Θέλει 2-3 μέρες να γίνεις registered και να μπορέσεις να το δεις...&lt;br /&gt;&lt;br /&gt;G.J.&lt;br /&gt;&lt;br /&gt;</description></item><item><title>Dynamic SQL WHERE clauses using conditional operators</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/862.aspx</link><pubDate>Fri, 14 Jan 2005 22:14:08 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:862</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/862.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=862</wfw:commentRss><description>Ειναι ενα αρθράκι που είχα στείλει παλιότερα στο SqlServerCentral.com και αποτέλεσε και θέμα συζήτησης. Ειναι ενδιαφέρον, τόσο το άρθρο όσο και η συζήτηση που ακολούθησε.&lt;br /&gt;&lt;a target="_blank" title="http://www.sqlservercentral.com/columnists/SFilippidis/conditionalstatementsinwhereclauses.asp" href="http://www.sqlservercentral.com/columnists/SFilippidis/conditionalstatementsinwhereclauses.asp"&gt;&lt;br /&gt;http://www.sqlservercentral.com/columnists/SFilippidis/conditionalstatementsinwhereclauses.asp&lt;/a&gt;&lt;br /&gt;</description></item></channel></rss>