PostgreSQL - كيفية التحقق مما إذا كانت بياناتي تحتوي على شرطة مائلة عكسية

StackOverflow https://stackoverflow.com/questions/706364

  •  22-08-2019
  •  | 
  •  

سؤال

حدد العد (*) من الجدول حيث يشبه العمود '%/%'؛

يعطيني عدد القيم التي تحتوي على "/"

كيف تفعل الشيء نفسه بالنسبة لـ "\"؟

هل كانت مفيدة؟

المحلول

SELECT  count(*)
FROM    table
WHERE   column ILIKE '%\\\\%';

نصائح أخرى

ومقتطفات من مستندات :

<اقتباس فقرة>   

لاحظ أن مائل بالفعل معنى خاص في سلسلة حرفية، لذلك لكتابة ثابت النمط الذي يحتوي على مائل يجب أن تكتب اثنين الخطوط المائلة العكسية في بيان SQL (على افتراض تركيب سلسلة الهروب يستخدم، انظر القسم 4.1.2.1). وهكذا، وكتابة النمط الذي يطابق الواقع مائل الحرفي يعني كتابة أربعة خطوط مائلة عكسية في البيان. يمكنك تجنب هذا عن طريق اختيار حرف الهروب مختلف مع ESCAPE. ثم مائل ليس خاص لمثل بعد الآن. (لكنه لا يزال خاصا لمحلل الحرفي سلسلة، لذلك كنت لا تزال بحاجة اثنين منهم.)

والأفضل من ذلك - لا تستخدم مثل، ومجرد استخدام موقف القياسية:

select count(*) from from table where 0 < position( E'\\' in column );

انت تحتاج E'\\\\' لأن الحجة ل LIKE هو regex و regex escape char موجود بالفعل \ (على سبيل المثال ~ E'\\w' سيطابق أي سلسلة تحتوي على حرف قابل للطباعة).

انظر وثيقة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top