解读 sql 中的字符串代码

Unscramble string code in sql

我在 Oracle SQL 中有一个函数可以打乱给定的输入。我需要解读它。

我需要一个基本上可以反转下面程序输出的程序。

source IN VARCHAR2
sGARBLED VARCHAR2(510);
index NUMBER;
length NUMBER;
onec NUMBER;

BEGIN
    length := LENGTH(source);
    IF length > 255 THEN
    length := 255;
      END IF;
 index := 1;
 sGARBLED := '';

 WHILE index <= length LOOP
    onec := ASCII(SUBSTR(source, index, 1)) - 30;
    IF (onec < 10) THEN
        sGARBLED := sGARBLED || '0';    
    END IF;
    sGARBLED := sGARBLED || CAST(onec AS VARCHAR2);
    index := index + 1;
  END LOOP;

 RETURN sGARBLED;
END

如果您只允许原始字符串中的字符值在加扰之前成为字母表中的字符,那么这是可能的。

代码看起来像这样:

sgarbled in VARCHAR2 
UNsGARBLED VARCHAR2(255);

length NUMBER;
index NUMBER;
onec NUMBER;

BEGIN
length := LENGTH(sgarbled);
index := 1;
UNsGARBLED := '';

 WHILE index <= length LOOP
 onec := SUBSTR(sgarbled, index, 1);
    IF (onec = '0') THEN
        onec := SUBSTR(sgarbled, (index + 1), 1) + 30; 
    ELSE 
        onec := SUBSTR(sgarbled, (index), 2) + 30;
    END IF;
    UNsGARBLED := UNsGARBLED || CAST(CHR(onec) AS VARCHAR2);
    index := index + 2;
  END LOOP;

 RETURN UNsGARBLED;
END

正如 Llama 先生所指出的,如果您允许原始输入字符串包含所有 ASCII 字符,那么这可能是不可能的。