有没有人可以帮我解决将MsSQL转换为MySQL的问题?它给出了语法错误。
原始Mssql功能:
CREATE FUNCTION StrToNum (srt1 varchar(250))
RETURNS real AS
BEGIN
DECLARE t real
IF srt1 IS NOT NULL and ISNUMERIC(srt1)=1 and PATINDEX('%,%',srt1)=0 and
PATINDEX('%e%',srt1)=0
SET t=CONVERT(Money,srt1)
ELSE
SET t=NULL
RETURN t
END
我尝试将此作为mysql
DELIMITER $$
CREATE FUNCTION StrToNum (srt1 VARCHAR(250))
RETURNS REAL DETERMINISTIC
BEGIN
DECLARE t REAL;
IF srt1 IS NOT NULL AND srt1 > 0 AND POSITION('%,%' IN srt1=0) AND POSITION('%e%' IN srt1=0)
THEN SET t=CONVERT(Money,INT);
ELSE
THEN SET t=NULL; END IF;
RETURN t;
END IF;
END $$
DELIMITER;
答案 0 :(得分:2)
此代码应解析:
DELIMITER $$
CREATE FUNCTION StrToNum (srt1 VARCHAR(250))
RETURNS REAL DETERMINISTIC
BEGIN
DECLARE t REAL;
IF srt1 IS NOT NULL AND srt1 > 0
AND POSITION('%,%' IN srt1=0)
AND POSITION('%e%' IN srt1=0)
THEN SET t=CONVERT(srt1,signed); --(1)
ELSE
SET t=NULL; END IF; --(2)
RETURN t;
END $$ --(3)
DELIMITER ; --(4)
我会为你分解:
CONVERT()
将SIGNED
或UNSIGNED
作为目标类型。 INT
不起作用。 (1)Money
代替srt1
(1)。混淆的原因是MSSQL和MySQL中的CONVERT()
反转了它们的参数。ELSE
之后不需要(或接受)THEN
关键字(2)END IF
(3)END$$
DELIMITER ;
需要空格(4)