下面的选择要求:
CASE WHEN psg_postingtransactions.[AMOUNT] != 0 THEN CAST(REPLACE(REPLACE(REPLICATE('0',12-LEN(RTRIM(psg_postingtransactions [AMOUNT])))+RTRIM(psg_postingtransactions.[AMOUNT]),'.',''), '-', '0') AS NUMERIC) ELSE '00000000000' END
发布于 2017-10-03 22:12:22
在MySQL中,请尝试如下:
LPAD(FLOOR(ABS(AMOUNT)*100),11,'0')但是,您的SQL看起来像是TSQL ( MySQL ),而不是MySQL,请参阅此SQL Fiddle
假设您确实想要TSQL,那么尝试如下:
RIGHT(CONCAT('00000000000',CAST(ABS([AMOUNT])*100 AS INT)),11) AS LEADZERO或者,您可以使用floor()代替cast()
RIGHT(CONCAT('00000000000',floor(ABS([AMOUNT])*100)),11) AS LEADZERO。
CREATE TABLE psg_postingtransactions
([AMOUNT] decimal(11,2))
;
INSERT INTO psg_postingtransactions
([AMOUNT])
VALUES
(0),
(123.45),
(45678.1),
(-12.56)
;查询1
SELECT
RIGHT(CONCAT('00000000000',cast(ABS([AMOUNT])*100 AS INT)),7) AS LEADZERO
FROM psg_postingtransactions结果
| LEADZERO |
|--------------|
| 00000000000 |
| 00000012345 |
| 00004567810 |
| 00000001256 |https://stackoverflow.com/questions/46549356
复制相似问题