পোস্টগ্র্রেস থেকে নন-এএসসিআইআই সারি অনুসন্ধান করা হচ্ছে


14

[:ascii:]পোস্টগ্র্রেসে কি ক্লাস কাজ করে? এটি তাদের সহায়তায় তালিকাভুক্ত নয় , তবে আমি ওয়েবে উদাহরণগুলি দেখতে পাচ্ছি যা এটি ব্যবহার করে।

আমার কাছে একটি ইউটিএফ -8 ডাটাবেস রয়েছে, যেখানে কোলেশন এবং সি_টিপি ই রয়েছে এবং পোস্টগ্রিসen_US.UTF-8 সংস্করণ 9.6.2। আমি যখন ASCII বিহীন সারিগুলির জন্য অনুসন্ধান করি:

select title from wallabag_entry where title ~ '[^[:ascii:]]';

আমি ইউনিকোড এবং অ-ইউনিকোড উভয় প্রতীকই পাই (সম্পূর্ণ আউটপুট এখানে ):

Сталинская правозащитница: мать Меленкова бабушка Настя
Дневник НКВДиста Шабалина: Знает ли Москва положение на фронте?
Бег по городу и поездка на осле: как в средневековье наказывали прелюбодеев
Как комиссар Крекшин в 1740-е чуть не отменил историю России
Have you heard of Saint Death? Don’t pray to her.
Архаїчна українська мова: перевага чи недолік?
Гренада не их
China’s marriage rate is plummeting because women are choosing autonomy over 

এই কোয়েরিতে ভুল কী?


1
আপনি কি ইউনিকোড নন-ব্রেকিংযোগ্য স্পেসে বাক্য পাচ্ছেন তা কি সম্ভব? (বা অন্য কোনও চরিত্র যা সেই বিষয়ে সরল দৃষ্টিতে লুকায়)
— জোয়ানোলো

@ জোয়ানোলো, এটি কিভাবে চেক করবেন? না-প্লেইন ভিউ কীভাবে দেখবেন?
— সানকাচার

আপনি regexp_replace()আপনার অ-এসসিআইআই অক্ষর চিহ্নিত করতে একটি ব্যবহার করতে পারেন । আমার উত্তর দেখুন।
— জোয়ানলো

1
আপনার সবসময় সঠিক ফলাফলটি dba.se এ আটকানো উচিত। আমরা অ-অসি অক্ষরগুলির জন্য গ্রাফিক পরীক্ষা করতে পারি না। আমরা প্রকৃত ফলাফল সেট পরীক্ষা করতে পারেন। এটি কোনও পোস্টার শিশু যার জন্য গ্রাফিক হওয়া উচিত নয়
— ইভান ক্যারল

2
কেবল আমার দুটি সেন্ট যুক্ত করতে: জোওনোলোর উত্তর দর্শনীয় হলেও এটি এই কংক্রিট সমস্যা সমাধান করতে আমাকে সহায়তা করেনি। ডান কোট ব্যতীত আমার ডেটাসেটে অন্যান্য বিভ্রান্তিপূর্ণ অক্ষর রয়েছে (একই জায়গাগুলি, ",«) যা [:ascii:]ক্লাসটি যেভাবেই ব্যবহার করা অসম্ভব করে তোলে What এই সমস্যাটিতে আমাকে যা সত্যই সহায়তা করেছিল তা ইউনিকোড ব্লকের একটি ধারণা, যা আমি এই কল্পিত রেজেক্স থেকে শিখেছি is টিউটোরিয়াল ।
— Suncatcher

উত্তর:


25

আপনার প্রশ্নের উত্তর দিতে: [:ascii:]কাজ করে। আপনি পারে আপনার লেখা যে আপনার যেমন চিনতে না কিছু অক্ষর আছে নন- ASCII , এখনো তারা সেখানে আছেন। এগুলি একটি অবিচ্ছেদ্য স্থানের মতো কিছু হতে পারে , উদাহরণস্বরূপ, বা অন্য কোনও ইউনিকোড স্পেস অক্ষর ।

এটা আছে অদ্ভুত নয় অ ভঙ্গুর স্পেস (  ধর্মগ্রন্থে) যে আপনি অনুলিপি-এবং-পেস্ট একটি ওয়েব পাতা থেকে, এখনো তোমাদের নড়ে না তারা সেখানে আছেন।

এখানে দেখানোর জন্য একটি উদাহরণ দেওয়া হয়েছে:

WITH t(t) AS
(
    VALUES 
      ( 'Сталинская правозащитница: мать Меленкова бабушка Настя' ),
      ( 'Дневник НКВДиста Шабалина: Знает ли Москва положение на фронте?' ),
      ( 'Бег по городу и поездка на осле: как в средневековье наказывали прелюбодеев' ),
      ( 'Как комиссар Крекшин в 1740-е чуть не отменил историю России' ),
      ( 'Have you heard of Saint Death? Don’t pray to her.' ),
      ( 'Архаїчна українська мова: перевага чи недолік?' ),
      ( 'Гренада не их' ),
      ( 'China’s marriage rate is plummeting because women are choosing autonomy over ' )

)
SELECT 
    t,  regexp_replace(t, '([^[:ascii:]])', '[\1]', 'g') AS t_marked
FROM 
    t 
WHERE 
    t ~ '[^[:ascii:]]' ;

এটাই যা তুমি পাও:

                                       t                                       |                                                                                                 t_marked                                                                                                  
-------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Сталинская правозащитница: мать Меленкова бабушка Настя                       | [С][т][а][л][и][н][с][к][а][я] [п][р][а][в][о][з][а][щ][и][т][н][и][ц][а]: [м][а][т][ь] [М][е][л][е][н][к][о][в][а] [б][а][б][у][ш][к][а] [Н][а][с][т][я]
 Дневник НКВДиста Шабалина: Знает ли Москва положение на фронте?               | [Д][н][е][в][н][и][к] [Н][К][В][Д][и][с][т][а] [Ш][а][б][а][л][и][н][а]: [З][н][а][е][т] [л][и] [М][о][с][к][в][а] [п][о][л][о][ж][е][н][и][е] [н][а] [ф][р][о][н][т][е]?
 Бег по городу и поездка на осле: как в средневековье наказывали прелюбодеев   | [Б][е][г] [п][о] [г][о][р][о][д][у] [и] [п][о][е][з][д][к][а] [н][а] [о][с][л][е]: [к][а][к] [в] [с][р][е][д][н][е][в][е][к][о][в][ь][е] [н][а][к][а][з][ы][в][а][л][и] [п][р][е][л][ю][б][о][д][е][е][в]
 Как комиссар Крекшин в 1740-е чуть не отменил историю России                  | [К][а][к] [к][о][м][и][с][с][а][р] [К][р][е][к][ш][и][н] [в] 1740-[е] [ч][у][т][ь] [н][е] [о][т][м][е][н][и][л] [и][с][т][о][р][и][ю] [Р][о][с][с][и][и]
 Have you heard of Saint Death? Don’t pray to her.                             | Have you heard of Saint Death? Don[’]t pray to her.
 Архаїчна українська мова: перевага чи недолік?                                | [А][р][х][а][ї][ч][н][а] [у][к][р][а][ї][н][с][ь][к][а] [м][о][в][а]: [п][е][р][е][в][а][г][а] [ч][и] [н][е][д][о][л][і][к]?
 Гренада не их                                                                 | [Г][р][е][н][а][д][а] [н][е] [и][х]
 China’s marriage rate is plummeting because women are choosing autonomy over  | China[’]s marriage rate is plummeting because women are choosing autonomy over 

আপনি এ থেকে দেখতে পারেন যে আপনার সমস্যাটি হ'ল অ্যাডাস্টোফের চরিত্র । এএসসিআইআই কেবলমাত্র অ্যাস্টোস্ট্রোফ সমর্থন করে। বাম-অ্যাস্টোস্ট্রোফ এবং ডান-অ্যাস্টোস্ট্রোফ টাইপোগ্রাফিকভাবে সঠিকভাবে ইউনিকোড এক্সটেনশানগুলি সঠিক।

এখানে ডিবিফিডল

আপনি এটি পূর্ববর্তী সংস্করণগুলির সাথেও http://rextester.com/UKIQ48014 (PostgreSQL 9.5) এবং http://sqlfiddle.com/#!15/4c563/1/0 (পোস্টগ্রিসএসকিউএল 9.3) এ যাচাই করতে পারেন


আমার কাছে যে পাঠ্যগুলি অনুমান করা হয় সেগুলি খাঁটি ASCII, এবং না :

 WITH t(t) AS
 (
     VALUES 
       ('A fully ASCII text!'),
       ('Have you heard of Saint Death? Don’t pray to her.'),
       ('China’s marriage rate is plummeting because women are choosing autonomy over ')
 )
 SELECT 
    regexp_replace(t, '([^[:ascii:]])', '[\1]', 'g') AS t_marked
 FROM 
    t 
 WHERE 
    t ~ '[^[:ascii:]]' ;
| টি_মার্কড |
 | : ------------------------------------------------- ----------------------------- |
 | আপনি কি সেন্ট ডেথের কথা শুনেছেন? তাঁর কাছে প্রার্থনা করবেন না [']। |
 | চীনের ['] বিয়ের হার হ্রাস পাচ্ছে কারণ মহিলারা স্বায়ত্তশাসনকেই বেছে নিচ্ছেন
 

এখানে ডিবিফিডল

এই গ্রন্থে ব্যবহার করছেন ' পরিবর্তে ' চিহ্ন অ্যাপস্ট্রফিগুলি করতে।

বিরামচিহ্নগুলি পরীক্ষা করুন : কেন ইউনিকোডের পছন্দের অ্যাড্রোথ্র চরিত্রটি সঠিক একক উদ্ধৃতি (ইউ + 2019), এবং শব্দার্থগতভাবে পৃথক অ্যাডোস্ট্রোফ (ইউ + 0027) নয়? ... এটি দেখার জন্য যে আপনি এই সমস্যার মুখোমুখি হওয়া প্রথম ব্যক্তি নন।


3
এটি একটি দুর্দান্ত উত্তর কারণ এটি আপনাকে অ-অসি অক্ষরগুলি দেখায়। এইভাবে আমি এই প্রশ্নের উত্তর দিতে হবে।
— ইভান ক্যারল

1
আমি ওপিএস উদাহরণ দিয়ে আপডেট করেছি।
— ইভান ক্যারল

1
সত্যিই দুর্দান্ত এবং সহায়ক উত্তর! ধন্যবাদ।
— সানকাচার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.