SQL Server: comment supprimer 'A' de la string base64

Je travaille sur SQL Server et essaye de créer une key unique combinant datatables des colonnes bigint et ssortingng . Pour minimiser la taille des bigint's de caractères bigint's enencoding Base 64. Le problème est que le résultat inclut le fait de diriger les zéros de base64 et augmente la taille du champ résultant. Quel est le moyen de supprimer ces principaux A utilisant T-SQL ou XQuery ?

Exemple de code:

 DECLARE @binInput VARBINARY(MAX) SET @binInput = CAST(123 AS VARBINARY(MAX)) SELECT CAST(N'' AS XML).value('xs:base64Binary(sql:variable("@binInput"))', 'varchar(max)') 

J'ai un résultat AAAAew== où je préférerais juste voir ew parce que l'idée est de rendre la string finale aussi courte que possible et la string base64 devrait être plus courte que base10.

mise à jour 1 : comme suggéré par Richard Boyce, j'ai essayé de convertir bigint en string égale, mais il donne null à la suite de la conversion en base64

 declare @input bigint declare @varInput nvarchar(max) set @input = 123 set @varInput = cast(cast(@input as varbinary(max)) as varchar(max)) select CAST(N'' AS xml).value('xs:base64Binary(sql:variable("@varInput"))', 'varchar(max)') 

mise à jour 2 : la solution actuelle consiste à get une string base64binary et à supprimer les 'A' et les '=' principaux. Ce n'est pas parfait, donc toutes les suggestions sont les bienvenues. Code réel:

 declare @input bigint set @input = 1234567890 declare @output varchar(max) set @output = (select cast(@input as varbinary(max)) for xml path(''),binary base64) set @output = replace(lsortingm(replace(@output,'A',' ')),' ','A') -- remove leading 'A's set @output = replace(@output,'=','') -- remove trailing '='s select @output 

    Plutôt que d'essayer de supprimer les "A" du résultat codé, essayez de les empêcher en premier lieu.

    Vous devez convertir votre numéro en une string avant de l'encoder.

    Essaye ça

     DECLARE @binInput VARBINARY(MAX) SET @binInput = CAST(CAST(123 AS VARCHAR(MAX)) AS VARBINARY(MAX)) DECLARE @Result VARCHAR(MAX) SELECT @Result = CAST(N'' AS XML).value('xs:base64Binary(sql:variable("@binInput"))', 'varchar(max)') SELECT CAST(CAST(N'' AS XML).value('xs:base64Binary(sql:variable("@Result"))', 'varbinary(max)') AS VARCHAR(MAX)) 

    Notez que lorsque codé "123" devient "MTIz" pas ew ==

    Ne voulant pas laisser une réponse qui ne répond pas à la question, voici comment supprimer un certain nombre de A principaux d'une string (mais la réponse donnée par @Richard est meilleure):

     DECLARE @VAL NVARCHAR(MAX) = N'AAAA12345ABCD9876==' SELECT SUBSTRING(@VAL,PATINDEX('%[^A]%',@VAL), LEN(@VAL)) ---------------- 12345ABCD9876==