यह कितना कारगर होगा, इसके बारे में मत सोचिए:
Select convert(decimal(28,10), rtrim(ltrim(replace(REPLACE(AdditionalDescription,'%',''), ',','.')))) As AdditionalDescription
from PriceTerm
where AdditionalDescription like '%[%]%'
व्याख्या:
- स्पेस से बदलकर % निकालें
,.- किसी भी अग्रणी या पिछली जगह को हटा दें।
decimal(28, 10)में कनवर्ट करें ।
अपडेट करें:
ओपी द्वारा अतिरिक्त जानकारी के अनुसार।
Select
convert(decimal(28,10),replace(replace(replace(rtrim(ltrim(AdditionalDescription)), ' ',''),',','.'),'%','')) AS PercentAddition
from test
where replace(rtrim(ltrim(AdditionalDescription)), ' ','')
like '[0-9]%[,.]%[%0-9]'
and
isnumeric(replace(replace(replace(rtrim(ltrim(AdditionalDescription)), ' ',''),',','.'),'%',''))=1
'[0-9]%[,.]%[%0-9]' . की व्याख्या :
[0-9]- हम केवल तभी रुचि रखते हैं जब डेटा किसी संख्या से शुरू होता है।%- संख्या के बाद इसमें कोई भी वर्ण हो सकता है। हमisnumeric. के साथ गैर-संख्यात्मक का ध्यान रखते हैंwhere. में खंड।[,.]- हमारे पास,. के लिए डेटा है या.।%-[,.]. के बाद इसमें कोई भी वर्ण हो सकता है। हमisnumeric. के साथ गैर-संख्यात्मक का ध्यान रखते हैंwhere. में खंड।[%0-9]- हम चाहते हैं कि डेटा या तो एक अंक के साथ समाप्त हो या%।
नोट: आपको संशोधित करना होगा '[0-9]%[,.]%[%0-9]' जैसे-जैसे आपको और बुरे पात्र मिलते हैं।
संदर्भ:
- SQLFiddle के साथ खेलने के लिए:https://sqlfiddle.com/#!3/09a34 /4
LIKE- https://msdn.microsoft.com /en-us/लाइब्रेरी/ms179859(v=sql.90).aspx