यह कितना कारगर होगा, इसके बारे में मत सोचिए:
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 के साथ खेलने के लिए:http://sqlfiddle.com/#!3/09a34 /4
LIKE
- http://msdn.microsoft.com /en-us/लाइब्रेरी/ms179859(v=sql.90).aspx