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


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? Dont pray to her.
Архаїчна українська мова: перевага чи недолік?
Гренада не их
Chinas 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? Dont pray to her.                             | Have you heard of Saint Death? Don[’]t pray to her.
 Архаїчна українська мова: перевага чи недолік?                                | [А][р][х][а][ї][ч][н][а] [у][к][р][а][ї][н][с][ь][к][а] [м][о][в][а]: [п][е][р][е][в][а][г][а] [ч][и] [н][е][д][о][л][і][к]?
 Гренада не их                                                                 | [Г][р][е][н][а][д][а] [н][е] [и][х]
 Chinas 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.