2012-10-07 18 views
31

को कैसे प्रतिस्थापित करना है, मैं तालिका से एक फ़ील्ड चुनना चाहता हूं और इसे सबस्ट्रिंग करना चाहता हूं।एक MySQL तालिका कॉलम

उदाहरण के लिए:

VAN1031 --> 1031 

मैं इस कोशिश की, लेकिन अनुचित वाक्य रचना है:

SELECT SUBSTR(R.regnumber,3,3) from registration R 

यह कैसे किया जा सकता है?

+2

बेशक! http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring - ps, यह 'चयन सब्सक्राइबिंग' ('VAN1031', 4, 4) होगा - 4 वें चरित्र से शुरू करें और स्ट्रिंग से 4 अक्षर लें ;-) – dash

+0

'चयन करें "पेंगुइन", सबस्ट्र ("पेंगुइन", 1, 3) 'प्रिंट्स:' पेंगुइन पेन ' –

उत्तर

23

आप तीसरा तर्क (लम्बाई) की जरूरत नहीं है यदि आप किसी विशिष्ट सूचकांक के अधिकार के लिए सभी पात्रों का चयन करना चाहते: क्योंकि एसक्यूएल तार में

SELECT SUBSTR(R.regnumber, 4) 
FROM registration AS R 

मैं भी 4 से शुरू सूचकांक बदल 1-अनुक्रमित हैं और 0-अनुक्रमित नहीं हैं क्योंकि वे कई लोकप्रिय प्रोग्रामिंग भाषाओं में हैं।

+0

मुझे नहीं पता कि क्यों' substr (col, 4)' करता है मेरे लिए काम नहीं करते, और मुझे इसका इस्तेमाल इस तरह करना है: 'substr (col, 1, 4)'। क्यूं कर? मेरी समस्या MySQL संस्करण से संबंधित है? – Shafizadeh

6

आप SUBSTRING() उपयोग कर सकते हैं:

select substring(col1, 4) 
from table1 

SQL Fiddle with Demo देखें। तो आपकी क्वेरी होगा:

select substring(col1, 4, 4) 
from table1 
22

आप उपयोग कर सकते हैं:

SUBSTR(string,position) 
SUBSTR(string,position,length) 
SUBSTRING_INDEX(string, delimiter, count) 

उदाहरण:

command          prints 
------------------------------------------- ----------- 
select substr("abcd", 1, 1)     #a 
select substr("abcd", 1, 2)     #ab 
select substr("abcd", 2, 1)     #b 
select substr("abcd", 2, 2)     #bc 
select substr("abcd", -2, 1)     #c 
select substr("abcd", -2, 2)     #cd 

select substring_index('ababab', 'b', 1); #a 
select substring_index('ababab', 'b', 2); #aba 
select substring_index('ababab', 'b', 3); #ababa 
select substring_index('ababab', 'b', -1); # 
select substring_index('ababab', 'b', -2); #ab 
select substring_index('ababab', 'b', -3); #abab 

select substr("abcd", 2)      #bcd 
select substr("abcd", 3)      #cd 
select substr("abcd", 4)      #d 
select substr("abcd", -2)     #cd 
select substr("abcd", -3)     #bcd 
select substr("abcd", -4)     #abcd 

SELECT substring(R.regnumber,4) 
from registration R 
अगर आप वापस जाने के लिए वर्णों की संख्या निर्दिष्ट करना चाहते हैं के

से।

+6

आपके उदाहरणों में 'ababab' को 'abcdef' के साथ प्रतिस्थापित किया जाना चाहिए क्योंकि आउटपुट' ab' टेक्स्ट को दोहराने के कारण भ्रमित हो रहा है। – machineaddict

1
SELECT substring(R.regnumber FROM 4) FROM registration AS R; 

और यदि आप एक पूर्णांक के रूप में भाग लेना चाहते हैं न कोई स्ट्रिंग आप लिख सकते हैं:

SELECT CAST(substring(R.regnumber FROM 4) AS UNSIGNED) FROM registration as R; 
0

मैंने देखा है कि mysql सूचकांक 1 के बजाय शून्य के रूप में कई प्रोग्रामिंग भाषाओं किया से शुरू होता है।

SELECT SUBSTRING(R.regNumber,1,3) FROM registration AS R 

वैन रिटर्न और

SELECT SUBSTRING(R.regNumber,4) FROM registration AS R 
0

कभी-कभी आप कुछ अंतिम अक्षर के बिना स्तंभ को पकड़ने के लिए की जरूरत के रूप में स्ट्रिंग के शेष भाग देता है। उदाहरण के लिए, मेरे पास है:

This is a 

हम क्या कर सकते हैं ('@bluefeet रों जवाब और लंबाई का उपयोग):

This is a string 

मान लीजिए कि किसी कारण से मैं स्तंभ चाहते पिछले 6 वर्णों के बिना चलो

select substring(col1, 1,LENGTH(col1)-7) 
from table1 

यह केवल एक उदाहरण था, लेकिन आपको यह विचार मिला, मैं गलत डेटाबेस आयात को ठीक करने के लिए उपयोग कर रहा हूं।

संबंधित मुद्दे