স্ট্রিং লিটারেলস এবং পোস্টগ্র্যাক্সএলএল এ অবজেক্ট ক্যারেক্টার

একটি সারণিতে একটি অব্যাহতির অক্ষর সন্নিবেশ করার প্রচেষ্টা একটি সতর্কবাণী ফলাফল।

উদাহরণ স্বরূপ:

create table EscapeTest (text varchar(50));

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

সতর্কতা উত্পাদন করে:

WARNING:  nonstandard use of escape in a string literal

( PSQL 8.2 ব্যবহার করে )

কেউ এই চারপাশে পেতে কিভাবে জানেন?

0

4 উত্তর

কুল।

আমি ই সম্পর্কে ডকুমেন্টেশন পাওয়া যায় নি:

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

PostgreSQL এছাড়াও "escape" স্ট্রিং স্ট্রেন্টস গ্রহণ করে, যা এসকিউএল স্ট্যান্ডার্ডের একটি এক্সটেনশন। একটি অব্যাহতির স্ট্রিং ধ্রুবক খোলার একক উদ্ধৃতির আগে ঠিক উল্লিখিত অক্ষর E (ঊর্ধ্ব বা নিম্নতর কেস) লিখে, উদাহরণস্বরূপ। E'foo '। (যখন একটি অবজেক্ট স্ট্রিং ধ্রুবক জুড়ে চলছে, তখন প্রথম খোলার উদ্ধৃতির পূর্বে ই ই লিখুন।) একটি বিট স্ট্রিং এর মধ্যে, একটি ব্যাকস্ল্যাশ অক্ষর (\) একটি C- মত ব্যাকস্ল্যাশ অব্যাহতির ক্রম শুরু করে, যেখানে ব্যাকস্ল্যাশের সংমিশ্রণ এবং নিম্নলিখিত অক্ষর ( গুলি) একটি বিশেষ বাইট মান প্রতিনিধিত্ব করে। \ b একটি ব্যাকস্পেস, \ f একটি ফরম ফিড, \ n একটি নতুন লাইন, \ r একটি ক্যারেজ রিটার্ন, \ t একটি ট্যাব। এছাড়াও সমর্থিত \ সংখ্যা, যেখানে সংখ্যা একটি অকটাল বাইট মান প্রতিনিধিত্ব করে, এবং \ xhexdigits, যেখানে hexdigits একটি হেক্সাডেসিমাল বাইট মান প্রতিনিধিত্ব করে। (এটি আপনার দায়িত্ব যে আপনি তৈরি বাইট ক্রম সার্ভার অক্ষর সেট এনকোডিং মধ্যে বৈধ অক্ষর হয়।) একটি ব্যাকস্ল্যাশ নিম্নলিখিত কোন অক্ষর আক্ষরিক নেওয়া হয়। সুতরাং, একটি ব্যাকস্ল্যাশ অক্ষর অন্তর্ভুক্ত করতে, দুটি ব্যাকস্ল্যাশ লিখুন (\\) এছাড়াও, '' লিখিত স্ট্রিং '' একটি সাধারণ উদ্ধৃতি অন্তর্ভুক্ত করা যেতে পারে, '' এর স্বাভাবিক পদ্ধতি ছাড়াও। "

0
যোগ

আংশিকভাবে। টেক্সট সন্নিবেশিত করা হয়, কিন্তু সতর্কতা এখনও উত্পন্ন হয়।

আমি 'ই' এর সাথে পূর্বে প্রযোজ্য টেক্সট নির্দেশিত একটি আলোচনার খুঁজে পেয়েছি, যেমন:

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

এই সতর্কতা অবরুদ্ধ, কিন্তু টেক্সট এখনও সঠিকভাবে ফিরে না হচ্ছে আমি মাইকেল পরামর্শ হিসাবে অতিরিক্ত স্ল্যাশ যোগ করা হলে, এটি কাজ।

যেমন:

insert into EscapeTest (text) values (E'This is the first part \\n And this is the second');
0
যোগ
উল্লেখ্য যে PostgreSQL 9.0 E'testing \\ x20-দ্বৈত-স্ল্যাশ '' টেস্টিং হিসাবে মূল্যায়ন করবে \\ x20double-slash '', তাই শুধুমাত্র একক-স্ল্যাশ পদ্ধতিতে E'string 'স্টাইল লিটারেলের জন্য কাজ করে
যোগ লেখক Alexander, উৎস
যোগ লেখক Pitt, উৎস
psql \ copy নোট: আমি দেখেছি যে E '\ n' ফাইলটিকে '\ n' হিসাবে একটি নতুন লাইনের পরিবর্তে লিখিত হয়েছে যখন আমি পিএইচপি এর `\ কপি 'মেটা-কমান্ডের জন্য ক্যোয়ারী আর্গুমেন্টে এটি ব্যবহৃত হয়েছে
যোগ লেখক Stew, উৎস

Postgres ইনপুটের উপর আপনার ডেটা ছাঁটা জন্য আমি এটি অত্যন্ত অসম্ভাব্য খুঁজে - এটা হয় এটি প্রত্যাখ্যান বা হিসাবে এটি সংরক্ষণ করা হয়।

[email protected]:~$ 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 0 1
milen=> select * from EscapeTest;
          text
------------------------
 This will be inserted
  This will not be
(1 row)

milen=>
0
যোগ
আমি দেওয়া পরীক্ষা ক্ষেত্রে চেষ্টা করুন এবং আপনি নিজের জন্য এটি দেখতে হবে।
যোগ লেখক rjohnston, উৎস
আকর্ষণীয়, মনে হচ্ছে সমস্যাটি JDBC ড্রাইভারের মধ্যে ছিল, কারণ ডাটাবেসের বাইরে পাঠানো টেক্সট খুব স্পষ্টভাবে আটকানো হচ্ছে ...
যোগ লেখক rjohnston, উৎস
Postgres আছে কিছু খুব নির্দিষ্ট পরিস্থিতিতে ইনপুট ডেটা ছিন্ন। উদাহরণস্বরূপ, একটি চরিত্রটি পরিবর্তিত (4) কলামটি ইনপুট "পরীক্ষা" (শব্দটি, 6 অক্ষরের পর দুটি স্পেস) দেওয়া হলে স্পেসগুলি ছিন্নমূল হবে এবং "পরীক্ষা" মান সংরক্ষণ করবে। একটি সাধারণ নিয়ম হিসাবে, তবে আপনি অনুমান করতে পারেন যে Postgres আপনার ডেটা ছাঁটাইয়ের পরিবর্তে ত্রুটি করবে।
যোগ লেখক Bryson, উৎস

সতর্কতা জারি করা হয় যেহেতু আপনি আপনার স্ট্রিংগুলিতে ব্যাকস্ল্যাশ ব্যবহার করছেন। আপনি যদি বার্তাটি এড়াতে চান তবে এই কমান্ডটি টাইপ করুন "standard_conforming_strings = on; set;" তারপর আপনার স্ট্রিং আগে "ই" ব্যবহার করুন ব্যাকস্ল্যাশ সহ যে আপনি postgresql intrepret করতে চান।

0
যোগ
আমি এসকিউএল বিবৃতি স্ট্রিং উল্লেখ ছিল, যখন আপনি এখন একটি psql কমান্ড ব্যবহার করা হয়। আপনি কপি কমান্ডের পরিবর্তে \ cipe কমান্ড ব্যবহার করে একই ত্রুটি পাবেন?
যোগ লেখক eppesuig, উৎস
এটি সঠিক উত্তর। PG এর আধুনিক সংস্করণ এখন এটি থাকার ডিফল্ট।
যোগ লেখক jpmc26, উৎস