चुनौतियों के लिए टेबल बनाने और उपयोग करने के बारे में कुछ विचार:
1. SQL इनपुट को पहले से मौजूद टेबल के जरिए लिया जा सकता है
कोड गोल्फ इनपुट / आउटपुट तरीके :
SQL एक नामित तालिका से इनपुट ले सकता है
इस तालिका को इनपुट मानों के साथ बनाना और आबाद करना आपके बाइट कुल की ओर नहीं है, आप बस मान सकते हैं कि यह पहले से ही है।
इसका मतलब है कि आपकी गणना इनपुट तालिका से सरल चयन के माध्यम से आउटपुट कर सकती है:
SELECT 2*SQRT(a)FROM t
2. यदि संभव हो तो, वास्तव में एक तालिका न बनाएं
इसके बजाय (69 बाइट्स):
CREATE TABLE t(b INT)
INSERT t VALUES(7),(14),(21),(99)
SELECT b FROM t
बस करो (43 बाइट्स):
SELECT b FROM(VALUES(7),(14),(21),(99))t(b)
3. यदि संभव हो, तो तालिका का चयन करें में चयन करें
इसके बजाय (39 बाइट्स):
CREATE TABLE t(p INT)
INSERT t VALUES(2)
ऐसा करें (17 बाइट्स):
SELECT 2 p INTO t
4: कई स्तंभों को एक साथ मिलाने पर विचार करें
यहां दो भिन्नताएं हैं जो समान आउटपुट लौटाती हैं:
SELECT a,b FROM
(VALUES('W','Bob'),('X','Sam'),('Y','Darla'),('Z','Elizabeth'))t(a,b)
SELECT LEFT(a,1),SUBSTRING(a,2,99)FROM
(VALUES('WBob'),('XSam'),('YDarla'),('ZElizabeth'))t(a)
कुछ परीक्षण के बाद, शीर्ष संस्करण (एकाधिक कॉलम) 7 या उससे कम पंक्तियों के साथ छोटा लगता है , निचला संस्करण (LEFT और SUBSTRING के कारण) 8 या अधिक पंक्तियों के साथ छोटा होता है । आपके सटीक डेटा के आधार पर आपका माइलेज अलग-अलग हो सकता है।
5: पाठ के बहुत लंबे अनुक्रमों के लिए REPLACE और EXEC का उपयोग करें
आराम से श्रीदेवी के उत्कृष्ट उत्तर की नस में , यदि आपके पास 15 या अधिक मूल्य हैं , तो तत्वों के बीच REPLACE
दोहराया '),('
विभाजकों से छुटकारा पाने के लिए एक प्रतीक पर उपयोग करें :
114 वर्ण:
SELECT a FROM(VALUES('A'),('B'),('C'),('D'),('E'),('F'),('G'),('H')
,('I'),('J'),('K'),('L'),('M'),('N'),('O'))t(a)
112 अक्षर:
DECLARE @ CHAR(999)=REPLACE('SELECT a FROM(VALUES(''
A-B-C-D-E-F-G-H-I-J-K-L-M-N-O''))t(a)','-','''),(''')EXEC(@)
यदि आप पहले से ही हैं अन्य कारणों से डायनेमिक SQL का उपयोग (या कई रीप्लेस हैं), तो यह वह सीमा है जहाँ यह इस लायक है कि यह बहुत कम है।
6: चर का एक गुच्छा के बजाय नामित कॉलम के साथ एक चयन का उपयोग करें
यहाँ jmlt के शानदार जवाब से प्रेरित होकर, एक सेलेक्ट के माध्यम से फिर से उपयोग करें:
SELECT a+b+a+b+d+b+b+a+a+d+a+c+a+c+d+c+c+a+a
FROM(SELECT'Hare 'a,'Krishna 'b,'Rama 'c,'
'd)t
रिटर्न
Hare Krishna Hare Krishna
Krishna Krishna Hare Hare
Hare Rama Hare Rama
Rama Rama Hare Hare
(एमएस एसक्यूएल के लिए मैंने \t
इन-लाइन रिटर्न में बदलाव CONCAT()
किया , और +
बाइट्स को बचाने के लिए बदल दिया )।