Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

sql का उपयोग करके अल्फा और न्यूमेरिक को विभाजित करें

यदि संख्यात्मक भाग हमेशा शुरुआत में होता है, तो आप इसका उपयोग कर सकते हैं:

PATINDEX('%[0-9][^0-9]%', ConcUnit)

अंतिम अंक का सूचकांक प्राप्त करने के लिए।

इस प्रकार, यह:

DECLARE @str VARCHAR(MAX) = '4000 ug/ML' 

SELECT LEFT(@str, PATINDEX('%[0-9][^0-9]%', @str )) AS Number,
       LTRIM(RIGHT(@str, LEN(@str) - PATINDEX('%[0-9][^0-9]%', @str ))) As Unit

आपको देता है:

Number  Unit
-------------
4000    ug/ML

संपादित करें:

यदि संख्यात्मक डेटा में दोहरे मान भी शामिल हैं, तो आप इसका उपयोग कर सकते हैं:

SELECT LEN(@str) - PATINDEX ('%[^0-9][0-9]%', REVERSE(@str))

अंतिम अंक की अनुक्रमणिका . प्राप्त करने के लिए ।

इस प्रकार, यह:

SELECT LEFT(@str, LEN(@str) - PATINDEX ('%[^0-9][0-9]%', REVERSE(@str)))

आपको अंकीय भाग देता है।

और यह:

SELECT LEFT(@str, LEN(@str) - PATINDEX ('%[^0-9][0-9]%', REVERSE(@str))) AS Numeric,
       CASE 
          WHEN CHARINDEX ('%', @str) <> 0 THEN LTRIM(RIGHT(@str, LEN(@str) - CHARINDEX ('%', @str)))
          ELSE LTRIM(RIGHT(@str, PATINDEX ('%[^0-9][0-9]%', REVERSE(@str))))
       END AS Unit

आपको संख्यात्मक और इकाई दोनों भाग देता है।

यहां कुछ परीक्षण दिए गए हैं जो मैंने आपके द्वारा पोस्ट किए गए डेटा के साथ किए हैं:

इनपुट:

DECLARE @str VARCHAR(MAX) = '50 000ug/ML'

आउटपुट:

Numeric Unit
------------
50 000  ug/ML

इनपुट:

DECLARE @str VARCHAR(MAX) = '99.5%'

आउटपुट:

Numeric Unit
------------
99.5    

इनपुट:

DECLARE @str VARCHAR(MAX) = '4000 . 35 % ug/ML'

आउटपुट:

Numeric     Unit
------------------
4000 . 35   ug/ML


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पहचान कॉलम डालने के लिए मैं इकाई ढांचे को कैसे मजबूर कर सकता हूं?

  2. SQL सर्वर (T-SQL) में डेटाबेस मेल खाता अपडेट करें

  3. एंटिटी फ्रेमवर्क के साथ संग्रहित प्रक्रिया से डेटा प्राप्त करना

  4. SQL सर्वर में अपने सत्र की ANSI_NULLS सेटिंग की जांच कैसे करें

  5. फ़ाइल का नाम और पूर्ण पथ से पथ पार्स करें