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

Hàm CONV () trong bông tuyết

Tôi đã viết một UDF để làm những gì CONV () làm. Nó hoạt động, nhưng rất tiếc, các biến Javascript không hỗ trợ độ chính xác số lớn như mẫu của bạn.

Điều này sẽ hoạt động đối với đầu vào nhỏ hơn, nhưng đối với đầu vào Base36 lớn của bạn, điều sau sẽ xảy ra:

15468921890196183763 - nên là kết quả này

15468921890196185000 - Các biến gốc JavaScript không có mức độ chính xác đó

Trong trường hợp bạn thấy hữu ích khi các giá trị nhỏ hơn được giấu kín từ cơ sở này sang cơ sở khác, đây là:

create or replace function CONV(VALUE_IN string, OLD_BASE float, NEW_BASE float)
returns string
language javascript
as
$$
    // Usage note: Loses precision for very large inputs
    return parseInt(VALUE_IN, Math.floor(OLD_BASE).toString(Math.floor(NEW_BASE)));
$$;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL trả về bản ghi đầu tiên và cuối cùng cho các kết quả giống hệt nhau liên tiếp

  2. Cập nhật cột dựa trên các giá trị khớp trong bảng khác trong mysql

  3. Doctrine2 - Nhiều lần chèn trong một lần chụp

  4. Có thể xác định cột dấu thời gian không rỗng và không có giá trị mặc định và không có hành vi đặc biệt khi cập nhật không?

  5. tại sao truy vấn mysql này không hoạt động?