在 PgAdmin 的 Postgresql 中使用反向 for 循环反转数字
Reversing a number using reverse for loop in Postgresql in PgAdmin
我正在尝试反转字符串,比方说使用反转循环的“1234”。
但是输出是 <NULL>
DO $$
DECLARE
L_NO VARCHAR(5) := '1234';
L_LEN NUMERIC(5);
L_REV_NO VARCHAR(5);
BEGIN
L_LEN := CHAR_LENGTH(L_NO) ;
RAISE NOTICE 'STRING LENGTH IS %' , L_LEN ;
FOR CNTR IN REVERSE L_LEN..1 LOOP
L_REV_NO = L_REV_NO||SUBSTRING(L_NO,CNTR,1);
END LOOP;
RAISE NOTICE 'NUMBER IS %' ,L_NO ;
RAISE NOTICE 'REVERSE NUMBER IS %' ,L_REV_NO ;
END $$ ;
输出
NOTICE: STRING LENGTH IS 4
NOTICE: NUMBER IS 5484
NOTICE: REVERSE NUMBER IS <NULL>
对我做错了什么有什么建议吗??
当你使用:L_REV_NO = L_REV_NO||SUBSTRING(L_NO,CNTR,1);
你会 L_REV_NO = NULL || ... => NULL
您需要先初始化L_REV_NO
变量:
DO $$
DECLARE
L_NO VARCHAR(5) := '1234';
L_LEN NUMERIC(5);
L_REV_NO VARCHAR(5) = '';
BEGIN
L_LEN := CHAR_LENGTH(L_NO) ;
RAISE NOTICE 'STRING LENGTH IS %' , L_LEN ;
FOR CNTR IN REVERSE L_LEN..1 LOOP
L_REV_NO = L_REV_NO||SUBSTRING(L_NO,CNTR,1);
END LOOP;
RAISE NOTICE 'NUMBER IS %' ,L_NO ;
RAISE NOTICE 'REVERSE NUMBER IS %' ,L_REV_NO ;
END $$ ;
另一个简单的解决方案是使用内置的 REVERSE
函数。
SELECT REVERSE('1234')
-- 4321
我正在尝试反转字符串,比方说使用反转循环的“1234”。
但是输出是 <NULL>
DO $$
DECLARE
L_NO VARCHAR(5) := '1234';
L_LEN NUMERIC(5);
L_REV_NO VARCHAR(5);
BEGIN
L_LEN := CHAR_LENGTH(L_NO) ;
RAISE NOTICE 'STRING LENGTH IS %' , L_LEN ;
FOR CNTR IN REVERSE L_LEN..1 LOOP
L_REV_NO = L_REV_NO||SUBSTRING(L_NO,CNTR,1);
END LOOP;
RAISE NOTICE 'NUMBER IS %' ,L_NO ;
RAISE NOTICE 'REVERSE NUMBER IS %' ,L_REV_NO ;
END $$ ;
输出
NOTICE: STRING LENGTH IS 4
NOTICE: NUMBER IS 5484
NOTICE: REVERSE NUMBER IS <NULL>
对我做错了什么有什么建议吗??
当你使用:L_REV_NO = L_REV_NO||SUBSTRING(L_NO,CNTR,1);
你会 L_REV_NO = NULL || ... => NULL
您需要先初始化L_REV_NO
变量:
DO $$
DECLARE
L_NO VARCHAR(5) := '1234';
L_LEN NUMERIC(5);
L_REV_NO VARCHAR(5) = '';
BEGIN
L_LEN := CHAR_LENGTH(L_NO) ;
RAISE NOTICE 'STRING LENGTH IS %' , L_LEN ;
FOR CNTR IN REVERSE L_LEN..1 LOOP
L_REV_NO = L_REV_NO||SUBSTRING(L_NO,CNTR,1);
END LOOP;
RAISE NOTICE 'NUMBER IS %' ,L_NO ;
RAISE NOTICE 'REVERSE NUMBER IS %' ,L_REV_NO ;
END $$ ;
另一个简单的解决方案是使用内置的 REVERSE
函数。
SELECT REVERSE('1234')
-- 4321