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)));
$$;