2009-03-03 5 views
0

Ich schreibe eine SQL-Funktion, die eine Dezimalzahl übernehmen und die base32-Darstellung dieser Dezimalzahl zurückgeben wird.SQL Base32-Konvertierung

Mein Problem ist mit der Dezimal zu Ascii-Konvertierung.

durfte ich die folgende Abfrage und Rück ein ASCII-Zeichen

„SELECT CHAR (65)“ laufen, das „A“

jedoch in meiner Funktion gibt, wenn ich meine Ausgabe-String zu bauen bin versucht, von Buchstaben, habe ich Probleme, ein bigint in ein Zeichen zu werfen, dann verkette das Zeichen zum Ende eines anderen Zeichens (was meine Ausgabe sein würde).

Beispielcodezeile: "SET @OutputChar = @OutputChar + CAST ((@Output + 55) AS CHAR (255))"

Was den richtigen Weg ist, eine Bigint zu werfen verkohlen und dann verketten dieses Zeichen zu einem anderen?

Dank

Antwort

0

Wie erklären Sie @OutputChar?

Wenn Sie:

DECLARE @OutputChar CHAR(255) 

dann jedes Mal, wenn concantenate, wird es auf 255 CHAR enthält das Leerzeichen am Ende gestutzt, vielleicht meinen Sie varchar statt CHAR zu benutzen?

+0

Sie wies auf die Fehler in meiner Logik heraus. Ich habe für das Zeichen 255 die Größe 255 zugewiesen, was, wenn ich zum Verketten gehe, 255 + 255 wäre und das verkettete Zeichen abschneiden würde. Ich änderte es von CHAR (255) zu CHAR und dies erlaubte dem Char nicht abgeschnitten zu werden. Danke für die Hilfe! – Zombie8

0

Versuchen Sie folgendes:

SET @OutputChar = @OutputChar + CONVERT(varchar(255),@Output + 55)