![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 1 Dołączył: 25.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam tabele o dwoch polach: id (bigint), binaria (varbinary(MAX))
W jaki sposob w zapytaniu SQL zapisac ciag znakow reprezentujacy dane binarne? Ktore znaki poprzedzac znakiem ucieczki (i jakim)? Niestety ponizszy kod zwraca blad typu danych, czego do konca nie rozumiem bo string to przeciez rowniez dane binarne...
Pytanie drugie dotyczy tego samego problemu, lecz pol typu nvarchar: Ktore znaki poprzedzac znakiem ucieczki (i jakim)? Ten post edytował zietek 5.02.2008, 22:03:00 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Nie pamiętam już czy była możliwość konwertowania danych typu varchar na binary/varbinary - sprawdź sobie w opisie funkcji cast albo convert na MSDN. Ale nawet jeśli istnieje to:
wstawi ci najprawdopodobniej 0x31313131 do pola [binaria] (asciitable.com) Cytat Ktore znaki poprzedzac znakiem ucieczki (i jakim)? Wystarczy dublować apostrofy:
-------------------- "Sumienie mam czyste, bo nieużywane."
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 34 Pomógł: 1 Dołączył: 25.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dzieki, wszystko dziala pieknie - ale niestety pojawil sie jeszcze jeden problem:
Dane tekstowe (zapisane w kodowaniu UTF-8) zawieraja gdzies wewnatrz binarnie znak chr(0), bitowo '00000000' - po prostu ktos wklepal taki tekst do formularza na stronie (co jest mozliwe) i teraz chce go zapisac do bazy... Wszystko jest zgodnie z UTF-8 poniewaz każdy znak w ASCII jest takze znakiem UTF-8. I teraz mam procedure w bazie, ktora chce wywolac z parametrem zawierajacy powyzszy string z formularza: Kod CREATE PROC dbo.procedura @string nvarchar(MAX) AS SELECT @string Tworze zapytanie: Kod EXEC dbo.procedura @string='aaaa cccc' gdzie spacja to wlasnie nasz znak chr(0) (bitowo '00000000' ) ...i niestety problem - komunikat krzyczy ze nie zamknelismy stringa... Probuje zatem tak: Kod EXEC dbo.procedura @string='aaaa'+char(0)+'cccc' ...niestety dowiaduje sie ze w parametrze nie mozna stosowac funcji char(). Probowalem jeszcze encjami: Kod EXEC dbo.procedura @string='aaaa\000cccc' ale to tez nie daje rezultatow....... Jest jakis inny sposob zapisania char(0) w stringu ![]() Ten post edytował zietek 13.02.2008, 08:56:44 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 29.06.2025 - 19:38 |