मैं एक जगह से पहले सभी पात्रों को एक क्षेत्र में लाना चाहता हूं
उदाहरण के लिए, यदि field1है"chara ters"
मैं चाहता हूं कि यह वापस लौटे "chara"
यह चुनिंदा कथन कैसा दिखेगा?
मैं एक जगह से पहले सभी पात्रों को एक क्षेत्र में लाना चाहता हूं
उदाहरण के लिए, यदि field1है"chara ters"
मैं चाहता हूं कि यह वापस लौटे "chara"
यह चुनिंदा कथन कैसा दिखेगा?
जवाबों:
SELECT LEFT(field1,LOCATE(' ',field1) - 1)
ध्यान दें कि यदि प्रश्न में स्ट्रिंग में रिक्त स्थान नहीं है, तो यह एक रिक्त स्ट्रिंग लौटाएगा।
select SUBSTRING_INDEX( field1, ' ', 1 ) from table;पसंद करता है, तो हम एक पूरी स्ट्रिंग करवाना है, तो वहाँ कोई जगह नहीं चाहते हो जाएगा।
SUBSTRING_INDEX) एक सामान्य समाधान के रूप में "बेहतर" है क्योंकि यह उन मानों को बनाए रखेगा जिनमें सीमांकक शामिल नहीं है, जिसके परिणामस्वरूप रिक्त मान है।
नीचे एक और तरीका है जो काम करता है और कुछ को थोड़ा सरल लग सकता है। यह SUBSTRING_INDEX MySQL फ़ंक्शन का उपयोग करता है । 1 पहले स्थान से पहले सब कुछ देता है, और -1 अंतिम स्थान के बाद सब कुछ लौटाता है।
यह 'चर' देता है:
SELECT SUBSTRING_INDEX( field1, ' ', 1 )
यह 'ters' देता है:
SELECT SUBSTRING_INDEX( field1, ' ', -1 )
विवरण
एक सकारात्मक मान स्ट्रिंग की शुरुआत से आपके निर्दिष्ट चरित्र के लिए दिखेगा, और एक नकारात्मक मूल्य स्ट्रिंग के अंत से शुरू होगा। संख्या का मूल्य स्ट्रिंग के शेष टुकड़े को वापस करने से पहले देखने के लिए आपके निर्दिष्ट चरित्र की मात्रा को इंगित करता है। यदि आपके द्वारा खोजा जा रहा वर्ण मौजूद नहीं है, तो संपूर्ण फ़ील्ड मान वापस कर दिया जाएगा।
इस स्थिति में, -2 दूसरे से अंतिम स्थान के दाईं ओर सब कुछ लौटा देगा, जो इस उदाहरण में मौजूद नहीं है, इसलिए संपूर्ण फ़ील्ड मान वापस कर दिया जाएगा।
आपको उसके लिए कुछ स्ट्रिंग ऑपरेशन की आवश्यकता होगी । हर क्षेत्र को मानते हुए कम से कम एक अंतरिक्ष वर्ण है:
SELECT SUBSTR(field1, 0, LOCATE(' ', field1)) FROM your_table;
सुरक्षित दृष्टिकोण:
SELECT IF(
LOCATE(' ', field1),
SUBSTR(field1, 0, LOCATE(' ', field1)),
field1
) FROM your_table;
SELECT SUBSTR(field1, 1, LOCATE(' ', field1)) FROM your_table;