टी-एसक्यूएल मनी डेटा प्रकार से दशमलव बिंदु हटाएं

एसक्यूएल सर्वर 2005 में केवल टी-एसक्यूएल का उपयोग करने की बाधा को देखते हुए, क्या एक वक्रार (यहां स्पष्ट रूप से) के रूपांतरण की तुलना में एक डेटा डेटाटाइप से दशमलव बिंदु को हटाने का एक बेहतर तरीका है और फिर दशमलव बिंदु की प्रतिस्थापन है?

मेरे पास वर्तमान में यही है।

SELECT REPLACE(1.23, '.', ''), REPLACE(19.99, '.', '')

जो वांछित 123 और 1 999 लौटाता है, लेकिन मैं सोच रहा था कि क्या कोई बेहतर तरीका है। कोई विचार?

0
ro fr bn

4 उत्तर

100 से गुणा करें और फिर एक int में कनवर्ट करें।

0
जोड़ा

ध्यान रखें कि पैसा डेटा प्रकार दशमलव के पिछले 4 अंक तक हो सकता है। दो से अधिक अंकों वाले मान आपके मूल समाधान या x100 चाल के लिए अपेक्षित काम नहीं कर सकते हैं।

0
जोड़ा

मौद्रिक मूल्यों को स्टोर करने के लिए आपको कभी भी डेटाटाइप का उपयोग कभी नहीं करना चाहिए। यदि आप कोई गणना करते हैं तो आपको संक्षिप्त परिणाम मिलेंगे। मेरा मतलब यह देखने के लिए निम्नलिखित चलाएं

DECLARE
@mon1 MONEY,
@mon2 MONEY,
@mon3 MONEY,
@mon4 MONEY,
@num1 DECIMAL(19,4),
@num2 DECIMAL(19,4),
@num3 DECIMAL(19,4),
@num4 DECIMAL(19,4)

SELECT
@mon1 = 100, @mon2 = 339, @mon3 = 10000,
@num1 = 100, @num2 = 339, @num3 = 10000

SET @mon4 = @mon1/@mon2*@mon3
SET @num4 = @num1/@num2*@num3

SELECT @mon4 AS moneyresult,
@num4 AS numericresult

आउटपुट: 2 9 4 9 0000 2 9 4 9 .525

0
जोड़ा

क्या आप उपयोग के मामले के बारे में थोड़ा और विशिष्ट हो सकते हैं? प्रतिनिधित्व से दशमलव बिंदु को हटाकर थोड़ा असामान्य है कि आप पैमाने के बारे में सारी जानकारी खो देंगे। क्या आप मानते हैं कि हमेशा दो अंक होंगे? यदि ऐसा है, तो आप स्ट्रिंग में कनवर्ट करने से पहले 100 से गुणा करके सरलीकृत कर सकते हैं।

0
जोड़ा