SQLite

2011-05-26 14 views
151

में गद्दी के साथ तार जोड़ कैसे मैं एक SQLite तालिका में तीन कॉलम है:SQLite

Column1 Column2 Column3 
    A   1   1 
    A   1   2 
    A   12   2 
    C   13   2 
    B   11   2 

मैं Column1-Column2-Column3 (जैसे A-01-0001) का चयन करने की जरूरत है। मैं पैड करने के लिए एक -

मैं SQLite के संबंध में अभी शुरुआत कर रहा हूँ वाले प्रत्येक कॉलम चाहते हैं, किसी भी मदद

+0

संभावित डुप्लिकेट: http://stackoverflow.com/q/3568779/2291 –

उत्तर

284

The || operator is "concatenate" - it joins together the two strings of its operands.

सराहना की जाएगी से http://www.sqlite.org/lang_expr.html

गद्दी के लिए, उचित रूप में-बेईमान तरह से मैं आपके लक्ष्य स्ट्रिंग से शुरू करना है, '0000' कहें, '0000423' को संयोजित करें, फिर '0423' के लिए सबस्ट्र (परिणाम, -4, 4)।

अद्यतन: लगता है "lpad" या "rpad" SQLite में की कोई मूल कार्यान्वयन है की तरह है, लेकिन आप के साथ (मूल रूप से मैं क्या प्रस्तावित) यहाँ का पालन कर सकते हैं: http://verysimple.com/2010/01/12/sqlite-lpad-rpad-function/

-- the statement below is almost the same as 
-- select lpad(mycolumn,'0',10) from mytable 

select substr('0000000000' || mycolumn, -10, 10) from mytable 

-- the statement below is almost the same as 
-- select rpad(mycolumn,'0',10) from mytable 

select substr(mycolumn || '0000000000', 1, 10) from mytable 

यहां बताया गया है यह दिखता है:

SELECT col1 || '-' || substr('00'||col2, -2, 2) || '-' || substr('0000'||col3, -4, 4) 

यह पैदावार

"A-01-0001" 
"A-01-0002" 
"A-12-0002" 
"C-13-0002" 
"B-11-0002" 
+3

करता है || अभी भी काम करते हैं अगर कॉलम में से एक शून्य है? – Andrew

+8

@ एंड्रयू - सामान्य रूप से कोई भी स्केलर ऑपरेशन जिसमें न्यूल शामिल होता है, न्यूल उत्पन्न करेगा। आपकी आवश्यकताओं को 'COALESCE (nullable_field,' ') || का उपयोग करके पूरा किया जा सकता है COALESCE (another_nullable_field, '') '। – MatBailie

25

SQLite has a printf function जो करता है वास्तव में है कि:

SELECT printf('%s-%.2d-%.4d', col1, col2, col3) FROM mytable 
+1

क्वेरी त्रुटि: ऐसा कोई फ़ंक्शन नहीं: printf कथन निष्पादित करने में असमर्थ Mytable सीमा 7 से printf ('% s।% S', id, url) का चयन करें। मेरा संस्करण 3.8.2 2014-12-06 है। आप कौन सा संस्करण उपयोग कर रहे हैं? –

+3

@ बेरीटसाला: 3.8.6 – ybungalobill

11

बस एक और @tofutim जवाब के लिए लाइन ... आप श्रेणीबद्ध पंक्ति के लिए कस्टम फ़ील्ड नाम चाहते हैं, तो ...

SELECT 
    (
    col1 || '-' || SUBSTR('00' || col2, -2, 2) | '-' || SUBSTR('0000' || col3, -4, 4) 
) AS my_column 
FROM 
    mytable; 

SQLite 3.8.8.3 पर परीक्षण किया गया, धन्यवाद!