Chciałbym napisać zapytanie T-SQL, w którym koduję ciąg jako łańcuch Base64. O dziwo nie mogę znaleźć żadnych natywnych funkcji T-SQL do kodowania Base64. Czy istnieje funkcja natywna? Jeśli nie, jaki jest najlepszy sposób kodowania Base64 w T-SQL?
sql-server-2005
tsql
encoding
base64
Jakub
źródło
źródło
Odpowiedzi:
Wiem, że na to już udzielono odpowiedzi, ale spędziłem więcej czasu niż chciałbym przyznać, wymyślając jednowierszowe instrukcje SQL, aby to osiągnąć, więc udostępnię je tutaj na wypadek, gdyby ktoś inny musiał zrobić to samo:
Musiałem użyć tabeli wygenerowanej przez podzapytanie w pierwszym zapytaniu (kodowanie), ponieważ nie mogłem znaleźć żadnego sposobu na przekonwertowanie oryginalnej wartości („TestData”) na jej reprezentację w postaci ciągu szesnastkowego („5465737444617461”), aby dołączyć ją jako argument do xs: hexBinary () w instrukcji XQuery.
Mam nadzieję, że to komuś pomoże!
źródło
xs:base64Binary(sql:column("bin"))
(bezxs:hexBinary
połączenia). Wielka pomoc!SELECT CAST( CAST(N'' AS XML).value( 'xs:base64Binary("LgkoCU0JJAlNCTAJQAkyCUcJIAAJCTIJTQkfCU0JLwk+CQ8JIAA4CT4JJAkgABsJKAlNCWQJ")' , 'VARBINARY(MAX)' ) AS NVARCHAR(MAX) ) UnicodeEncoding ;
Najprostszy i najkrótszy sposób, jaki udało mi się znaleźć dla programu SQL Server 2012 i nowszych, to
BINARY BASE64
:Dla Base64 do string
(lub
nvarchar(max)
dla ciągów Unicode)źródło
Oto modyfikacja odpowiedzi mercuriala, która używa podzapytania również przy dekodowaniu, umożliwiając użycie zmiennych w obu przypadkach.
źródło
Oto kod funkcji, które będą działać
Przykład użycia:
źródło
Uwielbiałem odpowiedź @ Slai. Musiałem tylko dokonać bardzo drobnych modyfikacji w jednowarstwowych, których szukałem. Pomyślałem, że podzielę się tym, z czym skończyłem, na wypadek, gdyby to pomogło komukolwiek, kto natknął się na tę stronę, tak jak ja:
źródło
VARBINARY
naVARBINARY(56)
i wtedy zadziałało.Nie, nie ma natywnej funkcji, ta metoda działała dla mnie w przeszłości: http://www.motobit.com/help/scptutl/sa306.htm,
więc ma tę metodę:
http://www.vbforums.com/ showthread.php? t = 554886
źródło
Jest to przydatne do kodowania i dekodowania.
Bharat J.
źródło
Zrobiłem skrypt, aby przekonwertować istniejący hash zakodowany w base64 na dziesiętny, może się przydać:
źródło
Możesz użyć tylko:
następnie po zakodowaniu otrzymasz tekst „MjE4Nqk5”
źródło