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

MYSQL परिणाम में संख्याओं को शब्दों में बदलना! क्वेरी का उपयोग करना

MySQL में कोई सरल कार्य नहीं है, आपको इस परिणाम को प्राप्त करने के लिए फ़ंक्शन की सहायता से एक फ़ंक्शन लिखने की आवश्यकता है।

निम्नलिखित की जाँच करें .. यह मेरे लिए काम करता है .. संदर्भ

   DELIMITER $$
    CREATE FUNCTION `number_to_string`(n INT) RETURNS varchar(100)
    BEGIN
        -- This function returns the string representation of a number.
        -- It's just an example... I'll restrict it to hundreds, but
        -- it can be extended easily.
        -- The idea is: 
        --      For each digit you need a position,
        --      For each position, you assign a string
        declare ans varchar(100);
        declare dig1, dig2, dig3 int; -- (one variable per digit)

        set ans = '';

        set dig3 = floor(n / 100);
        set dig2 = floor(n / 10) - dig3*10;
        set dig1 = n - (dig3*100 + dig2*10);

        if dig3 > 0 then
            case
                when dig3=1 then set ans=concat(ans, 'one hundred');
                when dig3=2 then set ans=concat(ans, 'two hundred');
                when dig3=3 then set ans=concat(ans, 'three hundred');
                when dig3=4 then set ans=concat(ans, 'four hundred');
                when dig3=5 then set ans=concat(ans, 'five hundred');
                when dig3=6 then set ans=concat(ans, 'six hundred');
                when dig3=7 then set ans=concat(ans, 'seven hundred');
                when dig3=8 then set ans=concat(ans, 'eight hundred');
                when dig3=9 then set ans=concat(ans, 'nine hundred');
                else set ans = ans;
            end case;
        end if;

        if dig2 = 1 then
            case
                when (dig2*10 + dig1) = 10 then set ans=concat(ans,' ten');
                when (dig2*10 + dig1) = 11 then set ans=concat(ans,' eleven');
                when (dig2*10 + dig1) = 12 then set ans=concat(ans,' twelve');
                when (dig2*10 + dig1) = 13 then set ans=concat(ans,' thirteen');
                when (dig2*10 + dig1) = 14 then set ans=concat(ans,' fourteen');
                when (dig2*10 + dig1) = 15 then set ans=concat(ans,' fifteen');
                when (dig2*10 + dig1) = 16 then set ans=concat(ans,' sixteen');
                when (dig2*10 + dig1) = 17 then set ans=concat(ans,' seventeen');
                when (dig2*10 + dig1) = 18 then set ans=concat(ans,' eighteen');
                when (dig2*10 + dig1) = 19 then set ans=concat(ans,' nineteen');
                else set ans=ans;
            end case;
        else
            if dig2 > 0 then
                case
                    when dig2=2 then set ans=concat(ans, ' twenty');
                    when dig2=3 then set ans=concat(ans, ' thirty');
                    when dig2=4 then set ans=concat(ans, ' fourty');
                    when dig2=5 then set ans=concat(ans, ' fifty');
                    when dig2=6 then set ans=concat(ans, ' sixty');
                    when dig2=7 then set ans=concat(ans, ' seventy');
                    when dig2=8 then set ans=concat(ans, ' eighty');
                    when dig2=9 then set ans=concat(ans, ' ninety');
                    else set ans=ans;
                end case;
            end if;
            if dig1 > 0 then
                case
                    when dig1=1 then set ans=concat(ans, ' one');
                    when dig1=2 then set ans=concat(ans, ' two');
                    when dig1=3 then set ans=concat(ans, ' three');
                    when dig1=4 then set ans=concat(ans, ' four');
                    when dig1=5 then set ans=concat(ans, ' five');
                    when dig1=6 then set ans=concat(ans, ' six');
                    when dig1=7 then set ans=concat(ans, ' seven');
                    when dig1=8 then set ans=concat(ans, ' eight');
                    when dig1=9 then set ans=concat(ans, ' nine');
                    else set ans=ans;
                end case;
            end if;
        end if;

        return trim(ans);
    END$$

    DELIMITER ;

अगर निम्न त्रुटि मिलती है ..

#1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you might want to use the less safe log_bin_trust_function_creators variable)

यह क्वेरी चलाएँ:

SET GLOBAL log_bin_trust_function_creators = 1;

उसके बाद मैसकल में एक फंक्शन बनाएं:

नीचे दिए गए कमांड की तरह ही फंक्शन को कॉल करें:

SELECT number_to_string( 666 );

आपको आउटपुट इस प्रकार मिलेगा:

number_to_string( 666 )
six hundred sixty six

आशा है कि यह दूसरों के लिए मदद करेगा!



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

  2. नेटवर्क एडेप्टर कनेक्शन स्थापित नहीं कर सका - Oracle 11g

  3. मैं इस तिथि को sql का उपयोग करके तालिका में क्यों दर्ज नहीं कर सकता?

  4. जहां क्लॉज . में 'केस एक्सप्रेशन कॉलम' का उपयोग करना

  5. Oracle में दो डेटाबेस ऑब्जेक्ट्स की तुलना कैसे करें?