Dize hazır ve postgresql kaçış karakterleri

oy
95

Bir uyarı bir tablo sonuçlarına bir kaçış karakteri eklemek için çalışılıyor.

Örneğin:

create table EscapeTest (text varchar(50));

insert into EscapeTest (text) values ('This is the first part \n And this is the second');

uyarı üretir:

WARNING:  nonstandard use of escape in a string literal

( Psql'i 8.2 kullanarak )

Herkes bu nasıl çözeceğinizi biliyor musunuz?

Oluştur 04/08/2008 saat 02:00
kaynak kullanıcı
Diğer dillerde...                            


5 cevaplar

oy
104

Kısmen. Metin takıldı ancak uyarı hala oluşturulur.

Ben gibi, 'E' ile öncesinde gereken metni belirtilen bir tartışma bulundu:

insert into EscapeTest (text) values (E'This is the first part \n And this is the second');

Bu uyarıyı bastırılmış, ancak metin yine de doğru iade edilen değildi. Michael önerdiği gibi ben ek eğik çizgi eklendiğinde, işe yaradı.

Gibi:

insert into EscapeTest (text) values (E'This is the first part \\n And this is the second');
Cevap 04/08/2008 saat 02:07
kaynak kullanıcı

oy
32

Güzel.

Ayrıca E ilişkin belgeler bulundu:

http://www.postgresql.org/docs/8.3/interactive/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS

PostgreSQL aynı zamanda SQL standardına bir uzantısı olan "kaçış" dize sabitleri, kabul eder. Sabit bir kaçış dize sadece örneğin E'foo' açmadan tek alıntı öncesi harfi E (büyük veya küçük harf) yazarak belirtilir. bir çıkış dizge içinde (ilk açılış alıntı önceki E mal., çizgi boyunca sabit bir çıkış dizesi devam ederken), bir ters eğik çizgi (\), bir Cı-benzeri ters eğik çizgi dizisi başlar ki burada ters eğik çizgi ve aşağıdaki karakter kombinasyonu ( lar) özel bir bayt değeri temsil eder. \ b Geri alma, \ f beslemesi, \ n bir satır ise, \ r satır başı olan, \ t sekme. Ayrıca basamak hexdigits onaltılık bayt değeri temsil eden bir sekizlik bayt değeri ve \ xhexdigits temsil eder, \ basamak vardır desteklenir. (Ayrıca oluşturduğunuz bayt dizileri sunucu karakter kümesi kodlaması geçerli karakterlerdir olduğunu sizin sorumluluğunuzdadır.) Tam anlamıyla alınır ters eğik çizgi izleyen Bunlardan başka karakter. Bu durumda, bir ters eğik çizgi dahil, iki eğik çizgi yazma (\\). Ayrıca, tek bir tırnak ' 'normal şekilde ek olarak,' \ yazarak bir kaçış dizesinde dahil edilebilir.

Cevap 04/08/2008 saat 02:14
kaynak kullanıcı

oy
5

Eğer dizeleri tersbölüleri kullandığınız beri uyarı verilir. Mesajı kaçınmak istiyorsanız, bu komut "konulu = standard_conforming_strings set;" yazın. Sonra postgresql netleşir istediğiniz ters eğik dahil dize önce "E" kullanırlar.

Cevap 17/02/2010 saat 00:51
kaynak kullanıcı

oy
3

Ben son derece düşüktür Postgres girişi üzerinde veri kesecek bulmak - Bu o kadar da ya mağaza reddeder.

milen@dev:~$ psql
Welcome to psql 8.2.7, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

milen=> create table EscapeTest (text varchar(50));
CREATE TABLE
milen=> insert into EscapeTest (text) values ('This will be inserted \n This will not be');
WARNING:  nonstandard use of escape in a string literal
LINE 1: insert into EscapeTest (text) values ('This will be inserted...
                                              ^
HINT:  Use the escape string syntax for escapes, e.g., E'\r\n'.
INSERT IGNORE  0 1
milen=> select * from EscapeTest;
          text
------------------------
 This will be inserted
  This will not be
(1 row)

milen=>
Cevap 19/09/2008 saat 20:24
kaynak kullanıcı

oy
2

Gerçekten aptal soru: Emin dize kesildi ediliyor Are ve sadece (ve muhtemelen arabiriminde gösterilmiyor) belirttiğiniz LINEBREAK de kırık değil? Yani, alan olarak gösterilmeye bekliyorsunuz

Bu eklenir \ n Bu olmayacak

veya

Bu eklenir

Bu olmayacak

Ayrıca, ne arabirim kullanıyorsunuz? o yol boyunca bir şey sizin tersbölüleri yiyor olması mümkün mü?

Cevap 16/09/2008 saat 14:26
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more