Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> skladnia zapytan T-SQL - podstawy
zietek
post 5.02.2008, 22:00:03
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...

  1. UPDATE dbo.tabela SET binaria = '1111' WHERE id = 1


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
Go to the top of the page
+Quote Post
Kicok
post 7.02.2008, 14:22:54
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

Ostrzeżenie: (0%)
-----


  1. UPDATE dbo.tabela SET binaria = 0x1111 WHERE id = 1


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:
  1. UPDATE dbo.tabela SET binaria = CAST( '1111' AS varbinary ) WHERE id = 1

wstawi ci najprawdopodobniej 0x31313131 do pola [binaria] (asciitable.com)


Cytat
Ktore znaki poprzedzac znakiem ucieczki (i jakim)?

Wystarczy dublować apostrofy:
  1. UPDATE tabela SET pole = 'O''Reilly'


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
zietek
post 13.02.2008, 08:55:32
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 questionmark.gif

Ten post edytował zietek 13.02.2008, 08:56:44
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 19:38