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

SQL सर्वर - कास्ट और डिवाइड

इसे आजमाएं..

DECLARE @table table(XYZ VARCHAR(8) , id int)

INSERT INTO @table
SELECT '4000', 1
UNION ALL
SELECT '3.123', 2
UNION ALL
SELECT '7.0', 3
UNION ALL
SELECT '80000', 4
UNION ALL
SELECT NULL, 5
UNION ALL
SELECT 'WTF',6

SELECT CASE 
     WHEN ISNUMERIC(XYZ) = 0 THEN NULL
     WHEN CHARINDEX('.',XYZ,0) < LEN(XYZ)-2 AND CHARINDEX('.',XYZ,0) > 0 THEN XYZ
     WHEN ISNUMERIC(XYZ) >0  then  convert(decimal(18,3),xyz) / 1000.000
     ELSE NULL
END
  FROM @table

आउटपुट

4.00000000000
3.12300000000
0.00700000000
80.00000000000
NULL
NULL

संपादित करें - आउटपुट में 3 दशमलव स्थान रखने के लिए ऐसा करें

SELECT convert(decimal(8,3),CASE 
     WHEN ISNUMERIC(XYZ) = 0 THEN NULL
     WHEN CHARINDEX('.',XYZ,0) < LEN(XYZ)-2 AND CHARINDEX('.',XYZ,0) > 0 THEN XYZ
     WHEN ISNUMERIC(XYZ) >0  then  convert(decimal(18,3),xyz) / 1000.000
     ELSE NULL
END)
  FROM @table

ध्यान दें (8,3) इसे परिभाषित करता है, कुल परिशुद्धता 8 अंक, बिंदु के बाद 3।

आप वापस वर्चर (8) में भी कनवर्ट करना चाह सकते हैं



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संग्रहीत प्रक्रिया SQL सर्वर में पैरामीटर के रूप में NULL को कैसे प्रतिबंधित करें?

  2. एसक्यूएल में संख्या को शब्दों में कनवर्ट करना

  3. SqlParameter तालिका नाम की अनुमति नहीं देता है - sql इंजेक्शन हमले के बिना अन्य विकल्प?

  4. SQL सर्वर में JSON

  5. SQL सर्वर में थोक आयात XML