SQL-Funktion zu ersetzen, mehrere Zeichen in string

Ich Schreibe einen SQL Server 2008 Benutzer-definierte Funktion ersetzen Sie eine Zeichenfolge von Zeichen mit anderen Zeichen. Ich denke der folgende code sollte funktionieren, aber es funktioniert nicht. Es scheint sich nicht um die Aktualisierung der variable für @input richtig.

Irgendeine Idee, wie kann ich dieses Problem beheben?

 DECLARE @Input AS VarChar(1000)
 DECLARE @i AS TinyInt
 DECLARE @Substring AS VarChar(1000)
 DECLARE @Prestring  AS VarChar(1000)
 DECLARE @Poststring  AS VarChar(1000)

 Select @Input='ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789',
        @i = 1

 WHILE @i <= LEN(@Input) 
 BEGIN
    SELECT @Prestring = SUBSTRING(@Input,-1,@i)
    SELECT @Poststring = SUBSTRING(@Input,@i+1,LEN(@Input))    

    SELECT @Substring =  replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace
(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace
(SUBSTRING(@Input,@i,1), 'A', 'N'),'B', 'O'), 'C', 'P'), 'D', 'Q'), 'E', 'R'), 'F', 'S'), 'G', 'T'), 'H', 'U'), 'I', 'V'), 'J', 'W'), 'K', 'X'), 'L', 'Y'), 'M', 'Z'), 'N', 'A'), '0', 'B'), 'P', 'C')
, 'Q', 'D'),'R', 'E'),'S', 'E'),'T', 'E'),'U', 'F'),'V', 'G'),'W', 'H'),'X', 'I'),'Y', 'J'), '1', '9'),'2','8'),'3','7'),'4','6'),'5','5'),'6','4'),'7','3'),'8','2'),'9','1'),' ','')

    SELECT @Input = @Prestring + @Substring + @Poststring
    SELECT @i = @i + 1

    PRINT 'Prestring= ' + @Prestring PRINT 'SUBSTRING= ' + @Substring PRINT 'PostString= '     + @Poststring PRINT 'Total String: ' + @Prestring + ' + ' + @Substring + ' + ' + @Poststringenter code here

    PRINT 'END'

 END

Output:
Prestring= 
SUBSTRING= A
PostString= BCDEFGHIJKLMNOPQRSTUVWXYZ123456789
Total String:  + A + BCDEFGHIJKLMNOPQRSTUVWXYZ123456789
1
END

Prestring= A
SUBSTRING= O
PostString= CDEFGHIJKLMNOPQRSTUVWXYZ123456789
Total String: A + O + CDEFGHIJKLMNOPQRSTUVWXYZ123456789
2
END

Prestring= AO
SUBSTRING= C
PostString= DEFGHIJKLMNOPQRSTUVWXYZ123456789
Total String: AO + C + DEFGHIJKLMNOPQRSTUVWXYZ123456789
3
END

Prestring= AOC
SUBSTRING= D
PostString= EFGHIJKLMNOPQRSTUVWXYZ123456789
Total String: AOC + D + EFGHIJKLMNOPQRSTUVWXYZ123456789
4
END

......
  • Jede andere detail? DBMS? Symptome?
  • Was den Wert von @input erwarten Sie am Ende der Fahrt? Und was ist es, was Ihnen jetzt?
  • Entschuldigung, MS SQL 2008. Ich kann nach der Ausgabe ich immer bin, aber bestätigt ist es dasselbe auf einem anderen system mit SQL2008
  • Wie kam es zu solch einem hässlichen suchen, wählen Sie @Substring Anweisung. Mein Tipp: erstellen Sie eine Funktion, die eine leere Zeichenfolge zurück und übergeben Sie dann in Ein und fixieren Sie den code in der Funktion den richtigen Wert zurück. Tun Sie dies für jeden einzelnen Charakter. Einmal können Sie ein Zeichen in einer Zeit, können Sie sich sorgen über die Verarbeitung mehrerer Zeichen.
  • Ich erwarte, dass NMNOPQRSTUVWXYZ987654321
  • War das nicht früher diskutiert?
  • ja, aber ich war nicht sicher, ob ich sollte einen neuen thread aufmachen, wie Ihr effektiv ein diff Problem als ich neu geschrieben haben, den code zu sehen, letzten Funktion war fehlerhaft.
  • würde das nicht bedeuten, mit der gleichen ersetzen code in der Funktion?

InformationsquelleAutor user1417337 | 2012-07-26
Schreibe einen Kommentar