2009-01-09 10 views
8

मेरे पास कॉलम कर्मचारी, पता, शहर, राज्य और ज़िप कोड के साथ एक टेबल है। मैंने प्रत्येक क्षेत्र को अल्पविराम से अलग करने के लिए एक कॉलम 'पता' में पता, शहर, राज्य, ज़िप कोड विलय कर दिया है।एसक्यूएल में अल्पविराम को बदलने के लिए क्वेरी?

मेरा मुद्दा यह है कि यदि फ़ील्ड में से कोई एक शून्य है, तो अतिरिक्त कॉमा डाला जाएगा। उदाहरण के लिए यदि city शून्य है तो परिणामी मान address,,state,zipcode जैसा होगा। मुझे यह अतिरिक्त कॉमा हटाने की जरूरत है। यह कैसे करना है? कृपया मदद करे।

+0

आप किस भाषा का उपयोग करते हैं? – Irmantas

+0

-1: आप एक अलग कॉलम क्यों बनाते हैं जिसमें चार अलग-अलग मान होते हैं? –

+0

आप ऐसा करने की कोशिश क्यों कर रहे हैं? आमतौर पर, यह वास्तव में अतिरिक्त कॉमा छोड़ने के लिए समझ में आता है ताकि यह खाली हो (जब यह खाली हो) – aronchick

उत्तर

15

आप एक case when निर्माण

... = case when city is null then '' else city + ',' end 

इस्तेमाल कर सकते हैं मूल्यों डेटाबेस में पहले से ही कर रहे हैं, तो आप इसे इस तरह से बदल सकते:

UPDATE tableX SET address= replace(address, ',,', ',') 

यह निष्पादित N बार भी कवर करने के लिए सुनिश्चित करने के लिए "सभी फ़ील्ड शून्य हैं" मामला।

+0

मुझे यकीन है कि REPLACE() हमेशा सभी घटनाओं को प्रतिस्थापित करता है। कम से कम, यह tSQL और MySQL में करता है, मुझे यकीन नहीं है कि यह वेनिला एसक्यूएल मानक का हिस्सा है या नहीं। –

+0

हां, लेकिन उदाहरण के लिए चयन करें (',,', ',', ',', ') का चयन करें, परिणाम में, – splattne

1

या आप मैन्युअल रूप से php में यह कर सकते हैं

<?php 

$str = 'address,,state,zipcode'; 

$str = preg_replace('/,{2,}/i', ',', $str); 
echo $str; 

?> 

मैं तुम्हें अपनी भाषा में ऐसा कर सकते हैं का मानना ​​है कि बहुत

0

उपयोग को बदलने के लिए जब आप डालने के लिए अपने स्ट्रिंग concat:

REPLACE('address,,state,zipcode', ',,' , ',') 
1
select replace(replace(replace(replace('LOKO, , , kkslksl ',' ',''),',','<>'),'><',''),'<>',',') from dual 
संबंधित मुद्दे