Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Chuyển đổi số thành từ trong kết quả MYSQL! Sử dụng truy vấn

Không có một hàm đơn giản nào trong MySQL mà bạn cần phải viết một hàm với sự trợ giúp của hàm thì bạn mới có thể đạt được kết quả này.

Kiểm tra phần sau .. Nó hoạt động cho tôi .. Tham khảo

   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 ;

Nếu gặp lỗi sau ..

#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)

Chạy truy vấn này:

SET GLOBAL log_bin_trust_function_creators = 1;

Sau đó Tạo một hàm trong Mysql:

Gọi hàm Giống như lệnh dưới đây:

SELECT number_to_string( 666 );

Bạn sẽ nhận được đầu ra là:

number_to_string( 666 )
six hundred sixty six

Hy vọng điều này sẽ giúp ích cho những người khác!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tìm nạp tên bảng từ một cột cho mệnh đề from

  2. cx oracle ImportError

  3. Cách điều chỉnh sql trong Oracle

  4. Cách tạo báo cáo PDF bằng PL / SQL

  5. Oracle xóa các hàng khỏi nhiều bảng