0
기본 10을 기본 64로 변환하고 내 용도에 맞게 작동하는 MS SQL Server 2000 데이터베이스에서 함수를 만들었습니다. 나는 또한 그러나 그것을 변환 한 그것은 내가 64 이하의 수를 유지하는 경우, 예를 들어MS SQL Server에서 MySQL로 UDF를 이식하면 예외가 발생합니다. 잘못된 double 값
Truncated double value 'B'
예는, 지금은 잘 변환한다는 예외가 발생 MySQL 데이터베이스에 있어야이 기능이 필요합니다. SQL 기능
CREATE FUNCTION ToBase64(@value int)
RETURNS varchar(50)
AS
BEGIN
DECLARE @seq char(64)
DECLARE @result varchar(50)
DECLARE @digit char(1)
SET @seq = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/'
SET @result = SUBSTRING(@seq, (@value%64)+1, 1)
WHILE @value > 0
BEGIN
SET @digit = SUBSTRING(@seq, ((@value/64)%64)+1, 1)
SET @value = @value/64
IF @value <> 0 SET @result = @digit + @result
END
RETURN @result
END
GO
이이 문제가 될 수
DELIMITER $$
CREATE FUNCTION ToBase64(Pvalue int) RETURNS varchar(50)
DETERMINISTIC
BEGIN
DECLARE seq char(64);
DECLARE result varchar(50);
DECLARE digit char(1);
SET seq = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/';
SET result = SUBSTRING(seq, (Pvalue%64)+1, 1);
WHILE Pvalue > 0 do
SET digit = SUBSTRING(seq, ((Pvalue/64)%64)+1, 1);
SET Pvalue = Pvalue/64;
IF Pvalue <> 0 THEN
SET result = digit + result;
END IF;
End While;
RETURN (result);
END
:에서 답에 덧붙여 SQL 서버의'(@value/64)'와 MySQL의'(Pvalue/64)'에주의를 기울이면 계산 결과가 다를 수 있습니다. – wchiquito
예, 결과는 mySQL과 SQL간에 다릅니다. – jasemilly